Перейти к основному содержимому

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

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

Привилегии

Вы можете загружать данные в таблицы Selena только как пользователь, имеющий привилегию INSERT на эти таблицы Selena. Если у вас нет привилегии INSERT, следуйте инструкциям в GRANT, чтобы предоставить привилегию INSERT пользователю, которого вы используете для подключения к вашему кластеру 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 асинхронно выполняет задание. Однако это не означает, что данные были успешно загружены. Вы должны использовать операторы или команды для проверки статуса задания. Затем вы можете определить, успешно ли загружены данные, на основе статуса задания.

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

подсказка

Вы можете установить различный кворум записи для таблиц, то есть сколько реплик требуется для возврата успеха загрузки, прежде чем 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 overflow

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

  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.