Перейти к основному содержимому
Версия: 2.0.x

Концепции загрузки

В этой теме представлены общие концепции и информация о загрузке данных.

Привилегии

Вы можете загружать данные в таблицы Selena только как пользователь, имеющий привилегию INSERT на эти таблицы Selena. Если у вас нет привилегии INSERT, следуйте инструкциям в разделе GRANT, чтобы предоставить привилегию INSERT пользователю, которого вы используете для подключения к вашему cluster Selena. Синтаксис: GRANT INSERT ON TABLE <table_name> IN DATABASE <database_name> TO { ROLE <role_name> | USER <user_identity>}.

Маркировка

Вы можете загружать данные в Selena, запуская задания загрузки. Каждое задание загрузки имеет уникальную метку, которая указывается пользователем или автоматически генерируется Selena для идентификации задания. Каждая метка может использоваться только для одного задания загрузки. После завершения задания загрузки его метку нельзя повторно использовать для других заданий загрузки. Только метки неудавшихся заданий загрузки могут быть использованы повторно.

Атомарность

Все методы загрузки, предоставляемые Selena, гарантируют атомарность. Атомарность означает, что квалифицированные данные в рамках задания загрузки должны быть либо полностью успешно загружены, либо ни одни квалифицированные данные не загружаются успешно. Никогда не бывает так, что часть квалифицированных данных загружена, а другая — нет. Обратите внимание, что квалифицированные данные не включают данные, отфильтрованные из-за проблем с качеством, таких как ошибки преобразования типов данных.

Протоколы

Selena поддерживает два протокола связи, которые можно использовать для отправки заданий загрузки: MySQL и HTTP. Из всех методов загрузки, поддерживаемых Selena, только Stream Load использует HTTP, тогда как все остальные используют MySQL.

Типы данных

Selena поддерживает загрузку данных всех типов. Вам нужно обратить внимание только на ограничения при загрузке нескольких конкретных типов данных. Для получения дополнительной информации см. Типы данных.

Строгий режим

Строгий режим — это необязательное свойство, которое можно настроить для загрузки данных. Он влияет на поведение загрузки и окончательные загруженные данные. Подробнее см. Строгий режим.

Режимы загрузки

Selena поддерживает два режима загрузки: режим синхронной загрузки и режим асинхронной загрузки.

примечание

Если вы загружаете данные с помощью внешних программ, вы должны выбрать режим загрузки, который лучше всего соответствует вашим бизнес-требованиям, прежде чем выбрать метод загрузки.

Синхронная загрузка

В режиме синхронной загрузки после отправки задания загрузки Selena синхронно выполняет задание для загрузки данных и возвращает результат задания после его завершения. Вы можете проверить, успешно ли выполнено задание, на основе результата задания.

Selena предоставляет два метода загрузки, поддерживающих синхронную загрузку: Stream Load и INSERT.

Процесс синхронной загрузки выглядит следующим образом:

  1. Создайте задание загрузки.

  2. Просмотрите результат задания, возвращённый Selena.

  3. Проверьте, успешно ли выполнено задание, на основе результата задания. Если результат задания указывает на сбой загрузки, вы можете повторить попытку выполнения задания.

Асинхронная загрузка

В режиме асинхронной загрузки после отправки задания загрузки Selena немедленно возвращает результат создания задания.

  • Если результат указывает на успешное создание задания, Selena асинхронно выполняет задание. Однако это не означает, что данные были успешно загружены. Вы должны использовать операторы или команды для проверки состояния задания. Затем вы можете определить, успешно ли загружены данные, на основе состояния задания.

  • Если результат указывает на сбой создания задания, вы можете определить, нужно ли повторить попытку выполнения задания, на основе информации о сбое.

подсказка

Вы можете установить различные кворумы записи для таблиц, то есть сколько replica должны вернуть успех загрузки, прежде чем Selena определит, что задание загрузки успешно. Вы можете указать кворум записи, добавив свойство write_quorum при CREATE TABLE, или добавить это свойство к существующей таблице с помощью ALTER TABLE.

Selena предоставляет четыре метода загрузки, поддерживающих асинхронную загрузку: Broker Load, Pipe, Routine Load и Spark Load.

Процесс асинхронной загрузки выглядит следующим образом:

  1. Создайте задание загрузки.

  2. Просмотрите результат создания задания, возвращённый Selena, и определите, было ли задание успешно создано.

    • Если создание задания успешно, перейдите к шагу 3.

    • Если создание задания не удалось, вернитесь к шагу 1.

  3. Используйте операторы или команды для проверки состояния задания, пока состояние задания не покажет FINISHED или CANCELLED.

Рабочий процесс Broker Load или Spark Load

Рабочий процесс задания Broker Load или Spark Load состоит из пяти этапов, как показано на следующем рисунке.

Рабочий процесс Broker Load или Spark Load

Рабочий процесс описан следующим образом:

  1. PENDING

    Задание находится в очереди в ожидании планирования FE.

  2. ETL

    FE предварительно обрабатывает данные, включая очистку, партиционирование, сортировку и агрегацию.

    Только задание Spark Load имеет этап ETL. Задание Broker Load пропускает этот этап.

  3. LOADING

    FE очищает и трансформирует данные, а затем отправляет данные на BE или CN. После загрузки всех данных данные находятся в очереди в ожидании вступления в силу. В это время состояние задания остаётся LOADING.

  4. FINISHED

    Когда загрузка завершается и все данные вступают в силу, состояние задания становится FINISHED. В это время данные можно запрашивать. FINISHED — это конечное состояние задания.

  5. CANCELLED

    До того, как состояние задания станет FINISHED, вы можете отменить задание в любое время. Кроме того, Selena может автоматически отменить задание в случае ошибок загрузки. После отмены задания его состояние становится CANCELLED, и все обновления данных, сделанные до отмены, откатываются. CANCELLED также является конечным состоянием задания.

Рабочий процесс Pipe

Рабочий процесс задания Pipe описан следующим образом:

  1. Задание отправляется на FE из клиента MySQL.

  2. FE разделяет файлы данных, хранящиеся по указанному пути, на основе их количества или размера, разбивая задание на меньшие последовательные задачи. Задачи попадают в очередь, ожидая планирования, после их создания.

  3. FE получает задачи из очереди и вызывает оператор INSERT INTO SELECT FROM FILES для выполнения каждой задачи.

  4. Загрузка данных завершается:

    • Если для задания при создании указано "AUTO_INGEST" = "FALSE", задание завершается после загрузки данных из всех файлов данных, хранящихся по указанному пути.

    • Если для задания при создании указано "AUTO_INGEST" = "TRUE", FE продолжит отслеживать изменения в файлах данных и автоматически загружать новые или обновлённые данные из файлов данных в целевую таблицу Selena.

Рабочий процесс Routine Load

Рабочий процесс задания Routine Load описан следующим образом:

  1. Задание отправляется на FE из клиента MySQL.

  2. FE разделяет задание на несколько задач. Каждая задача предназначена для загрузки данных из нескольких партиций.

  3. FE распределяет задачи на указанные BE или CN.

  4. BE или CN выполняют задачи и отчитываются FE после их завершения.

  5. FE генерирует последующие задачи, повторяет неудавшиеся задачи, если таковые имеются, или приостанавливает планирование задач на основе отчётов от BE.