Загрузка данных из локальной файловой системы
Selena предоставляет два метода загрузки данных из локальной файловой системы:
- Синхронная загрузка с использованием Stream Load
- Асинхронная загрузка с использованием Broker Load
Каждый из этих вариантов имеет свои преимущества:
- Stream Load поддерживает форматы CSV и JSON. Этот метод рекомендуется, если вы хотите загрузить данные из небольшого количества файлов, размер каждого из которых не превышает 10 ГБ.
- Broker Load поддерживает форматы Parquet, ORC, CSV и JSON (формат JSON поддерживается начиная с версии v1.5.2). Этот метод рекомендуется, если вы хотите загрузить данные из большого количества файлов, размер каждого из которых превышает 10 ГБ, или если файлы хранятся на сетевом хранилище (NAS). Использование Broker Load для загрузки данных из локальной файловой системы поддерживается начиная с версии v1.5.2.
Для данных в формате CSV обратите внимание на следующее:
- Вы можете использовать строку UTF-8, такую как запятая (,), табуляция или вертикальная черта (|), длиной не более 50 байт в качестве текстового разделителя.
- Значения NULL обозначаются с помощью
\N. Например, если файл данных состоит из трёх столбцов, и запись из этого файла содержит данные в первом и третьем столбцах, но не содержит данных во втором столбце, необходимо использовать\Nво втором столбце для обозначения значения NULL. Это означает, что запись должна быть записана какa,\N,b, а неa,,b. Записьa,,bозначает, что второй столбец содержит пустую строку.
Stream Load и Broker Load поддерживают трансформацию данных при загрузке, а также изменения данных с помощью операций UPSERT и DELETE во время загрузки. Для получения дополнительной информации см. Трансформация данных при загрузке и Изменение данных через загрузку.
Перед началом работы
Проверка привилегий
Вы можете загружать данные в таблицы 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>}.
Проверка сетевой конфигурации
Убедитесь, что машина, на которой находятся загружаемые данные, имеет доступ к узлам FE и BE cluster Selena через порты http_port (по умолчанию: 8030) и be_http_port (по умолчанию: 8040) соответственно.
Загрузка из локальной файловой системы через Stream Load
Stream Load — это синхронный метод загрузки на основе HTTP PUT. После отправки задания загрузки Selena синхронно выполняет задание и возвращает результат после завершения. Вы можете определить успешность задания по его результату.
ПРИМЕЧАНИЕ
После загрузки данных в таблицу Selena с помощью Stream Load данные материализованных представлений, созданных на этой таблице, также обновляются.
Принцип работы
Вы можете отправить запрос загрузки с клиента на FE по протоколу HTTP, и FE затем перенаправит запрос загрузки на конкретный BE или CN с помощью HTTP redirect. Вы также можете напрямую отправить запрос загрузки с клиента на выбранный BE или CN.
Если вы отправляете запросы загрузки на FE, FE использует механизм опроса для определения того, какой BE или CN будет служить координатором для получения и обработки запросов загрузки. Механизм опроса помогает достичь балансировки нагрузки в вашем cluster Selena. Поэтому мы рекомендуем отправлять запросы загрузки на FE.
BE или CN, получивший запрос загрузки, работает как Coordinator BE или CN для разделения данных на основе используемой схемы на части и распределения каждой части данных между другими задействованными BE или CN. После завершения загрузки Coordinator BE или CN возвращает результат задания загрузки вашему клиенту. Обратите внимание, что если вы остановите Coordinator BE или CN во время загрузки, задание загрузки завершится неудачей.
На следующем рисунке показан рабочий процесс задания Stream Load.