BROKER LOAD
Selena предоставляет метод загрузки данных на основе MySQL - Broker Load. После отправки задачи загрузки Selena выполняет её асинхронно. Вы можете использовать SELECT * FROM information_schema.loads для запроса результата задачи. Эта функция поддерживается начиная с версии v1.5.2. Для получения дополнительной информации о фоновой информации, принципах, поддерживаемых форматах файлов данных, способах выполнения загрузки в одну и несколько таблиц, а также о том, как просматривать результаты задач, см. loading overview.
Вы можете загружать данные в таблицы 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>}.
Синтаксис
LOAD LABEL [<database_name>.]<label_name>
(
data_desc[, data_desc ...]
)
WITH BROKER
(
StorageCredentialParams
)
[PROPERTIES
(
opt_properties
)
]
Обратите внимание, что в Selena некоторые литералы используются в качестве зарезервированных ключевых слов SQL. Не используйте эти ключевые слова напрямую в SQL-выражениях. Если вы хотите использовать такое ключевое слово в SQL-выражении, заключите его в обратные кавычки (`). См. Keywords.
Параметры
database_name и label_name
label_name указывает метку задачи загрузки. Для соглашений об именовании см. System limits.
database_name опционально указывает имя базы данных, к которой принадлежит целевая таблица.
Каждая задача загрузки имеет метку, которая является уникальной в пределах всей базы данных. Вы можете использовать метку задачи загрузки для просмотра статуса выполнения задачи и предотвращения повторной загрузки тех же данных. Когда задача загрузки переходит в состояние FINISHED, её метка не может быть использована повторно. Только метка задачи загрузки, которая перешла в состояние CANCELLED, может быть использована повторно. В большинстве случаев метка задачи загрузки используется повторно для повтора этой задачи и загрузки тех же данных, тем самым реализуя семантику Exactly-Once.
Для соглашений об именовании меток см. System limits.
data_desc
Описание пакета данных для загрузки. Каждый дескриптор data_desc объявляет информацию, такую как источник данных, ETL-функции, целевая таблица Selena и целевые партиции.
Broker Load поддерживает загрузку нескольких файлов данных за один раз. В одной задаче загрузки вы можете использовать несколько дескрипторов data_desc для объявления нескольких файлов данных, которые вы хотите загрузить, или использовать один дескриптор data_desc для объявления одного пути к файлу, из которого вы хотите загрузить все файлы данных. Broker Load также может гарантировать транзакционную атомарность каждой задачи загрузки, которая выполняется для загрузки нескольких файлов данных. Атомарность означает, что загрузка нескольких файлов данных в одной задаче загрузки должна либо успешно завершиться, либо завершиться с ошибкой. Никогда не происходит так, что загрузка некоторых файлов данных успешна, в то время как загрузка других файлов завершается с ошибкой.
data_desc поддерживает следующий синтаксис:
DATA INFILE ("<file_path>"[, "<file_path>" ...])
[NEGATIVE]
INTO TABLE <table_name>
[PARTITION (<partition1_name>[, <partition2_name> ...])]
[TEMPORARY PARTITION (<temporary_partition1_name>[, <temporary_partition2_name> ...])]
[COLUMNS TERMINATED BY "<column_separator>"]
[ROWS TERMINATED BY "<row_separator>"]
[FORMAT AS "CSV | Parquet | ORC"]
[(format_type_options)]
[(column_list)]
[COLUMNS FROM PATH AS (<partition_field_name>[, <partition_field_name> ...])]
[SET <k1=f1(v1)>[, <k2=f2(v2)> ...]]
[WHERE predicate]
data_desc должен включать следующие параметры:
-
file_pathУказывает путь сохранения одного или нескольких файлов данных, которые вы хотите загрузить.
Вы можете указать этот параметр как путь сохранения одного файла данных. Например, вы можете указать этот параметр как
"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/20210411"для загрузки файла данных с именем20210411из пути/user/data/tablenameна HDFS-сервере.Вы также можете указать этот параметр как путь сохранения нескольких файлов данных, используя подстановочные символы
?,*,[],{}или^. См. Wildcard reference. Например, вы можете указать этот параметр как"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/*/*"или"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/dt=202104*/*"для загрузки файлов данных из всех партиций или тольк о партиций202104в пути/user/data/tablenameна HDFS-сервере.NOTE
Подстановочные символы также могут использоваться для указания промежуточных путей.
В приведенных выше примерах параметры
hdfs_hostиhdfs_portописаны следующим образом:-
hdfs_host: IP-адрес хоста NameNode в HDFS-кластере. -
hdfs_host: порт FS хоста NameNode в HDFS-кластере. По умолчанию номер порта -9000.
NOTICE
- Broker Load поддерживает доступ к AWS S3 по протоколу S3 или S3A. Поэтому при загрузке данных из AWS S3 вы можете включить
s3://илиs3a://в качестве префикса в URI S3, который вы передаете в качестве пути к файлу. - Broker Load поддерживает доступ к Google GCS только по протоколу gs. Поэтому при загрузке данных из Google GCS вы должны включить
gs://в качестве префикса в URI GCS, который вы передаете в качестве пути к файлу. - При загрузке данных из Blob Storage вы должны использовать протокол wasb или wasbs для доступа к вашим данным:
- Если ваша учетная запись хранилища разрешает доступ по HTTP, используйте протокол wasb и запишите путь к файлу как
wasb://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>/*. - Если ваша учетная запись хранилища разрешает доступ по HTTPS, используйте протокол wasbs и запишите путь к файлу как
wasbs://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>/*.
- Если ваша учетная запись хранилища разрешает доступ по HTTP, используйте протокол wasb и запишите путь к файлу как
- При загрузке данных из Data Lake Storage Gen2 вы должны использовать протокол abfs или abfss для доступа к вашим данным:
- Если ваша учетная запись хранилища разрешает доступ по HTTP, используйте протокол abfs и запишите путь к файлу как
abfs://<container_name>@<storage_account_name>.dfs.core.windows.net/<file_name>. - Если ваша учетная запись хранилища разрешает доступ по HTTPS, используйте протокол abfss и запишите путь к файлу как
abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<file_name>.
- Если ваша учетная запись хранилища разрешает доступ по HTTP, используйте протокол abfs и запишите путь к файлу как
- При загрузке данных из Data Lake Storage Gen1 вы должны использовать протокол adl для доступа к вашим данным и записать путь к файлу как
adl://<data_lake_storage_gen1_name>.azuredatalakestore.net/<path>/<file_name>.
-
-
INTO TABLEУказывает имя целевой таблицы Selena.
data_desc также может опционально включать следующие параметры:
-
NEGATIVEОтменяет загрузку определенного пак ета данных. Для этого вам нужно загрузить тот же пакет данных с указанным ключевым словом
NEGATIVE.NOTE
Этот параметр действителен только когда таблица Selena является Aggregate-таблицей и все её столбцы значений вычисляются функцией
sum. -
PARTITIONУказывает партиции, в которые вы хотите загрузить данные. По умолчанию, если вы не указываете этот параметр, исходные данные будут загружены во все партиции таблицы Selena.
-
TEMPORARY PARTITIONУказывает имя временной партиции, в которую вы хотите загрузить данные. Вы можете указать несколько временных партиций, которые должны быть разделены запятыми (,).
-
COLUMNS TERMINATED BYУказывает разделитель столбцов, используемый в файле данных. По умолчанию, если вы не указываете этот параметр, он по умолчанию имеет значение
\t, что означает табуляцию. Разделитель столбцов, который вы указываете с помощью этого параметра, должен быть таким же, как разделитель столбцов, который фактически используется в файле данных. В противном случае задача загрузки завершится неудачей из-за недостаточного качества данных, и еёStateбудетCANCELLED.Задачи Broker Load отправляются по протоколу MySQL. Selena и MySQL оба экранируют символы в запросах на загрузку. Поэтому, если разделитель столбцов является невидимым символом, таким как табуляция, вы должны добавить обратную косую черту () перед разделителем столбцов. Например, вы должны ввести
\\t, если разделитель столбцов -\t, и вы должны ввести\\n, если разделитель столбцов -\n. Файлы Apache Hive™ используют\x01в качестве разделителя столбцов, поэтому вы должны ввести\\x01, если файл данных из Hive.NOTE
- Для CSV-данных вы можете использовать строку UTF-8, такую как запятая (,), табуляция или вертикальная черта (|), длина которой не превышает 50 байт, в качестве текстового разделителя.
- Null-значения обозначаются с помощью
\N. Например, файл данных состоит из трех столбцов, и запись из этого файла данных содержит данные в первом и третьем столбцах, но не содержит данных во втором столбце. В этой ситуации вам нужно использовать\Nво втором столбце для обозначения null-значения. Это означает, что запись должна быть составлена какa,\N,bвместоa,,b.a,,bобозначает, что второй столбец записи содержит пустую строку.
-
ROWS TERMINATED BYУказывает разделитель строк, используемый в файле данных. По умолчанию, если вы не указываете этот параметр, он по умолчанию имеет значение
\n, что означает перевод строки. Разделитель строк, который вы указываете с помощью этого параметра, должен быть таким же, как разделитель строк, который фактически используется в файле данных. В противном случае задача загрузки завершится неудачей из-за недостаточного качества данных, и еёStateбудетCANCELLED. Этот параметр поддерживается начиная с версии v1.5.2.Для заметок об использовании разделителя строк см. заметки об использовании для предыдущего параметра
COLUMNS TERMINATED BY. -
FORMAT ASУказывает формат файла данных. Допустимые значения:
CSV,ParquetиORC. По умолчанию, если вы не указываете этот параметр, Selena определяет формат файла данных на основе расширения имени файла .csv, .parquet или .orc, указанного в параметреfile_path. -
format_type_optionsУказывает параметры формата CSV, когда
FORMAT ASустановлен вCSV. Синтаксис:(
key = value
key = value
...
)NOTE
format_type_optionsподдерживается в версии v1.5.2 и выше.В следующей таблице описаны параметры.
Параметр Описание skip_header Указывает, пропускать ли первые строки файла данных, когда файл данных в формате CSV. Тип: INTEGER. Значение по умолчанию: 0.
В некоторых CSV-форматированных файлах данных первые строки в начале используются для определения метаданных, таких как имена столбцов и типы да нных столбцов. Установив параметрskip_header, вы можете позволить Selena пропустить первые строки файла данных во время загрузки данных. Например, если вы установите этот параметр в1, Selena пропустит первую строку файла данных во время загрузки данных.
Первые строки в начале файла данных должны быть разделены с использованием разделителя строк, который вы указываете в выражении загрузки.trim_space Указывает, удалять ли пробелы перед и после разделителей столбцов из файла данных, когда файл данных в формате CSV. Тип: BOOLEAN. Значение по умолчанию: false.
Для некоторых баз данных пробелы добавляются к разделителям столбцов при экспорте данных в виде CSV-форматированного файла данных. Такие пробелы называются ведущими пробелами или завершающими пробелами в зависимости от их расположения. Установив параметрtrim_space, вы можете позволить Selena удалять такие ненужные пробелы во время загрузки данных.
Обратите внимание, что Selena не удаляет пробелы (включая ведущие пробелы и завершающие пробелы) внутри поля, заключенного в пару символов, указанных вenclose. Например, следующие знач ения полей используют вертикальную черту (|) в качестве разделителя столбцов и двойные кавычки (") в качестве символаenclose:|"Love Selena"||" Love Selena "|| "Love Selena" |
Если вы установитеtrim_spaceвtrue, Selena обработает предыдущие значения полей следующим образом:|"Love Selena"||" Love Selena "||"Love Selena"|enclose Указывает символ, который используется для обертывания значений полей в файле данных в соответствии с RFC4180, когда файл данных в формате CSV. Тип: однобайтовый символ. Значение по умолчанию: NONE. Наиболее распространенные символы - одинарная кавычка (') и двойная кавычка (").
Все специальные символы (включая разделители строк и разделители столбцов), заключенные с использованием символа, указанного вenclose, считаются обычными символами. Selena может делать больше, чем RFC4180, так как позволяет вам указать любой однобайтовый символ в качестве символаenclose.
Если значение поля содержит символ, указанный вenclose, вы можете использовать тот же символ для экранирования этого символаenclose. Например, вы устанавливаетеencloseв", и значение поля -a "quoted" c. В этом случае вы можете ввести значение поля как"a ""quoted"" c"в файл данных.escape Указывает символ, который используется для экранирования различных специальных символов, таких как разделители строк, разделители столбцов, символы экранирования и символы, указанные в enclose, которые затем рассматриваются Selena как обычные символы и анализируются как часть значений полей, в которых они находятся. Тип: однобайтовый символ. Значение по умолчанию:NONE. Наиболее распространенный символ - косая черта (\), которая должна быть записана как двойная косая черта (\\) в SQL-выражениях.
NOTE
Символ, указанный вescape, применяется как внутри, так и снаружи каждой пары символов, указанных вenclose.
Два примера следующие:- Когда вы устанавливаете
encloseв"иescapeв\, Selena анализирует"say \"Hello world\""вsay "Hello world". - Предположим, что разделитель столбцов - запятая (
,). Когда вы устанавливаетеescapeв\, Selena анализируетa, b\, cв два отдельных значения полей:aиb, c.
- Когда вы устанавливаете
-
column_listУказывает сопоставление столбцов между файлом данных и таблицей Selena. Синтаксис:
(<column_name>[, <column_name> ...]). Столбцы, объявленные вcolumn_list, сопоставляются по имени со столбцами таблицы Selena.NOTE
Если столбцы файла данных сопоставляются последовательно со столбцами таблицы Selena, вам не нужно указывать
column_list.Если вы хотите пропустить определенный столбец файла данных, вам нужно только временно назвать этот столбец иначе, чем любой из столбцов таблицы Selena. Для получения дополнительной информации см. loading overview.
-
COLUMNS FROM PATH ASИзвлекает информацию об одном или нескольких полях партиции из пути к файлу, который вы указываете. Этот параметр действителен только когда путь к файлу содержит поля партиции.
Наприм ер, если файл данных хранится в пути
/path/col_name=col_value/file1, гдеcol_name- поле партиции и может быть сопоставлено со столбцом таблицы Selena, вы можете указать этот параметр какcol_name. Таким образом, Selena извлекает значенияcol_valueиз пути и загружает их в столбец таблицы Selena, на который сопоставленcol_name.NOTE
Этот параметр доступен только при загрузке данных из HDFS.
-
SETУказывает одну или несколько функций, которые вы хотите использовать для преобразования столбца файла данных. Примеры:
- Таблица Selena состоит из трех столбцов, которые представляют собой
col1,col2иcol3последовательно. Файл данных состоит из четырех столбцов, среди которых первые два столбца сопоставляются последовательно сcol1иcol2таблицы Selena, а сумма последних двух столбцов сопоставляется сcol3таблицы Selena. В этом случае вам нужно указатьcolumn_listкак(col1,col2,tmp_col3,tmp_col4)и указать(col3=tmp_col3+tmp_col4)в предложении SET для реализации преобразования данных. - Таблица Selena состоит из трех столбцов, которые представляют собой
year,monthиdayпоследовательно. Файл данных состоит только из одного столбца, который содержит значения даты и времени в форматеyyyy-mm-dd hh:mm:ss. В этом случае вам нужно указатьcolumn_listкак(tmp_time)и указать(year = year(tmp_time), month=month(tmp_time), day=day(tmp_time))в предложении SET для реализации преобразования данных.
- Таблица Selena состоит из трех столбцов, которые представляют собой
-
WHEREУказывает условия, на основе которых вы хотите фильтровать исходные данные. Selena загружает только исходные данные, которые соответствуют условиям фильтрации, указанным в предложении WHERE.
WITH BROKER
В версии v1.5.2 и более ранних введите WITH BROKER "<broker_name>", чтобы указать broker, который вы хотите использовать. Начиная с версии v1.5.2, вам больше не нужно указывать broker, но вам все равно нужно сохранить ключевое слово WITH BROKER.
StorageCredentialParams
Информ ация аутентификации, используемая Selena для доступа к вашей системе хранения.
HDFS
HDFS с открытым исходным кодом поддерживает два метода аутентификации: простая аутентификация и аутентификация Kerberos. Broker Load использует простую аутентификацию по умолчанию. HDFS с открытым исходным кодом также поддерживает настройку механизма HA для NameNode. Если вы выбираете HDFS с открытым исходным кодом в качестве вашей системы хранения, вы можете указать конфигурацию аутентификации и конфигурацию HA следующим образом:
-
Конфигурация аутентификации
-
Если вы используете простую аутентификацию, настройте
StorageCredentialParamsследующим образом:"hadoop.security.authentication" = "simple",
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"В следующей таблице описаны параметры в
StorageCredentialParams.Параметр Описание hadoop.security.authentication Метод аутентификации. Допустимые значения: simpleиkerberos. Значение по умолчанию:simple.simpleпредставляет простую аутентификацию, то есть без аутентификации, аkerberosпредставляет аутентификацию Kerberos.username Имя пользователя учетной записи, которую вы хотите использовать для доступа к NameNode HDFS-кластера. password Пароль учетной записи, которую вы хотите использовать для доступа к NameNode HDFS-кластера. -
Если вы используете аутентификацию Kerberos, настройте
StorageCredentialParamsследующим образом:"hadoop.security.authentication" = "kerberos",
"kerberos_principal" = "nn/zelda1@ZELDA.COM",
"kerberos_keytab" = "/keytab/hive.keytab",
"kerberos_keytab_content" = "YWFhYWFh"В следующей таблице описаны параметры в
StorageCredentialParams.Параметр Описание hadoop.security.authentication Метод аутентификации. Допустимые значения: simpleиkerberos. Значение по умолчанию:simple.simpleпредставляет простую аутентификацию, то есть без аутентификации, аkerberosпредставляет аутентификацию Kerberos.kerberos_principal Принципал Kerberos для аутентификации. Каждый принципал состоит из следующих трех частей, чтобы гарантировать, что он уникален в HDFS-кластере: usernameилиservicename: имя принципала.instance: имя сервера, на котором размещен узел для аутентификации в HDFS-кластере. Имя сервера помогает гарантировать уникальность принципала, например, когда HDFS-кластер состоит из нескольких DataNode, которые каждый независимо аутентифицируются.realm: имя области. Имя области должно быть в верхнем регистре.
nn/zelda1@ZELDA.COM.kerberos_keytab Путь сохранения файла keytab Kerberos. kerberos_keytab_content Содержимое файла keytab Kerberos в кодировке Base64. Вы можете выбрать указание либо kerberos_keytab, либоkerberos_keytab_content.
-
-
Конфигурация HA
Вы можете настроить механизм HA для NameNode HDFS-кластера. Таким образом, если NameNode переключается на другой узел, Selena может автоматически идентифицировать новый узел, который служит NameNode. Это включает следующие сценарии:
-
Если вы загружаете данные из одного HDFS-кластера с одним настроенным пользователем Kerberos, поддерживается как загрузка на основе broker, так и загрузка без broker.
-
Для выполнения загрузки на основе broker убедитесь, что развернута хотя бы одна независимая группа broker, и поместите файл
hdfs-site.xmlв путь{deploy}/confна узле broker, обслуживающем HDFS-кластер. Selena добавит путь{deploy}/confв переменную окруженияCLASSPATHпри запуске broker, позволяя broker читать информацию об узлах HDFS-кластера. -
Для выполнения загрузки без broker вам нужно только установить
hadoop.security.authentication = kerberosвconf/core-site.xmlв ка талогах развертывания всех узлов FE, BE и CN в вашем кластере и использовать командуkinitдля настройки учетной записи Kerberos.
-
-
Если вы загружаете данные из одного HDFS-кластера с несколькими настроенными пользователями Kerberos, поддерживается только загрузка на основе broker. Убедитесь, что развернута хотя бы одна независимая группа broker, и поместите файл
hdfs-site.xmlв путь{deploy}/confна узле broker, обслуживающем HDFS-кластер. Selena добавит путь{deploy}/confв переменную окруженияCLASSPATHпри запуске broker, позволяя broker читать информацию об узлах HDFS-кластера. -
Если вы загружаете данные из нескольких HDFS-кластеров (независимо от того, настроен один или несколько пользователей Kerberos), поддерживается только загрузка на основе broker. Убедитесь, что развернута хотя бы одна независимая группа broker для каждого из этих HDFS-кластеров, и выполните одно из следующих действий, чтобы позволить broker читать информацию об узлах HDFS-кластера:
-
Поместите файл
hdfs-site.xmlв путь{deploy}/confна узле broker, обслуживающем каждый HDFS-кластер. Selena добавит путь{deploy}/confв переменную окруженияCLASSPATHпри запуске broker, позволяя broker читать информацию об узлах этого HDFS-кластера. -
Добавьте следующую конфигурацию HA при создании задачи:
"dfs.nameservices" = "ha_cluster",
"dfs.ha.namenodes.ha_cluster" = "ha_n1,ha_n2",
"dfs.namenode.rpc-address.ha_cluster.ha_n1" = "<hdfs_host>:<hdfs_port>",
"dfs.namenode.rpc-address.ha_cluster.ha_n2" = "<hdfs_host>:<hdfs_port>",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"В следующей таблице описаны параметры в конфигурации HA.
Параметр Описание dfs.nameservices Имя HDFS-кластера. dfs.ha.namenodes.XXX Имя NameNode в HDFS-кластере. Если вы указываете несколько имен NameNode, разделите их запятыми ( ,).xxx- это имя HDFS-кластера, которое вы указали вdfs.nameservices.dfs.namenode.rpc-address.XXX.NN RPC-адрес NameNode в HDFS-кластере. NN- это имя NameNode, которое вы указали вdfs.ha.namenodes.XXX.dfs.client.failover.proxy.provider Провайдер NameNode, к которому будет подключаться клиент. Значение по умолчанию: org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.
-
NOTE
Вы можете использовать выражение SHOW BROKER для проверки broker, развернутых в вашем кластере Selena.
-
AWS S3
Если вы выбираете AWS S3 в качестве вашей системы хранения, выполните одно из следующих действий:
-
Чтобы выбрать метод аутентификации на основе instance profile, настройте
StorageCredentialParamsследующим образом:"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "<aws_s3_region>" -
Чтобы выбрать метод аутентификации на основе assumed role, настройте
StorageCredentialParamsследующим образом:"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<iam_role_arn>",
"aws.s3.region" = "<aws_s3_region>" -
Чтобы выбрать метод аутентификации на основе IAM user, настройте
StorageCredentialParamsследующим образом:"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>",
"aws.s3.region" = "<aws_s3_region>"
В следующей таблице описаны параметры, которые вам нужно настроить в StorageCredentialParams.
| Параметр | Обязательно | Описание |
|---|---|---|
| aws.s3.use_instance_profile | Да | Указывает, включать ли методы учетных данных instance profile и assumed role. Допустимые значения: true и false. Значение по умолчанию: false. |
| aws.s3.iam_role_arn | Нет | ARN IAM-роли, которая имеет привилегии на вашем AWS S3 bucket. Если вы выбираете assumed role в качестве метода учетных данных для доступа к AWS S3, вы должны указать этот параметр. |
| aws.s3.region | Да | Регион, в кото ром находится ваш AWS S3 bucket. Пример: us-west-1. |
| aws.s3.access_key | Нет | Access key вашего IAM-пользователя. Если вы выбираете IAM user в качестве метода учетных данных для доступа к AWS S3, вы должны указать этот параметр. |
| aws.s3.secret_key | Нет | Secret key вашего IAM-пользователя. Если вы выбираете IAM user в качестве метода учетных данных для доступа к AWS S3, вы должны указать этот параметр. |
Для получения информации о том, как выбрать метод аутентификации для доступа к AWS S3 и как настроить политику управления доступом в AWS IAM Console, см. Authentication parameters for accessing AWS S3.
Google GCS
Если вы выбираете Google GCS в качестве вашей системы хранения, выполните одно из следующих действий:
-
Чтобы выбрать метод аутентификации на основе VM, настройте
StorageCredentialParamsследующим образом:"gcp.gcs.use_compute_engine_service_account" = "true"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Значение по умолчанию Пример значения Описание gcp.gcs.use_compute_engine_service_account false true Указывает, использовать ли непосредственно служебную учетную запись, привязанную к вашему Compute Engine. -
Чтобы выбрать метод аутентификации на основе service account, настройте
StorageCredentialParamsследующим образом:"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>",
"gcp.gcs.service_account_private_key" = "<google_service_private_key>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Значение по умолчанию Пример значения Описание gcp.gcs.service_account_email "" "user@hello.iam.gserviceaccount.com"Адрес электронной почты в JSON-файле, созданном при создании служебной учетной записи. gcp.gcs.service_account_private_key_id "" "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" ID приватного ключа в JSON-файле, созданном при создании служебной учетной записи. gcp.gcs.service_account_private_key "" "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" Приватный ключ в JSON-файле, созданном при создании служебной учетной записи. -
Чтобы выбрать метод аутентификации на основе impersonation, настройте
StorageCredentialParamsследующим образом:-
Заставить VM instance имитировать служебную учетную запись:
"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"В следующей таблице оп исаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Значение по умолчанию Пример значения Описание gcp.gcs.use_compute_engine_service_account false true Указывает, использовать ли непосредственно служебную учетную запись, привязанную к вашему Compute Engine. gcp.gcs.impersonation_service_account "" "hello" Служебная учетная запись, которую вы хотите имитировать. -
Заставить служебную учетную запись (названную мета-служебной учетной записью) имитировать другую служебную учетную запись (названную данными служебной учетной записью):
"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>",
"gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>",
"gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Значение по умолчанию Пример значения Описание gcp.gcs.service_account_email "" "user@hello.iam.gserviceaccount.com"Адрес электронной почты в JSON-файле, созданном при создании мета-служебной учетной записи. gcp.gcs.service_account_private_key_id "" "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" ID приватного ключа в JSON-файле, созданном при создании мета-служебной учетной записи. gcp.gcs.service_account_private_key "" "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" Приватный ключ в JSON-файле, созданном при создании мета-служебной учетной записи. gcp.gcs.impersonation_service_account "" "hello" Данные служебной учетной записи, которую вы хотите имитировать.
-
Другая S3-совместимая система хранения
Если вы выбираете другую S3-совместимую систему хранения, такую как MinIO, настройте StorageCredentialParams следующим образом:
"aws.s3.enable_ssl" = "false",
"aws.s3.enable_path_style_access" = "true",
"aws.s3.endpoint" = "<s3_endpoint>",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>"
В следующей таблице описаны параметры, которые вам нужно настроить в StorageCredentialParams.
| Параметр | Обязательно | Описание |
|---|---|---|
| aws.s3.enable_ssl | Да | Указывает, включать ли SSL-соединение. Допустимые значения: true и false. Значение по умолчанию: true. |
| aws.s3.enable_path_style_access | Да | Указывает, включать ли доступ к URL в стиле пути. Допустимые значения: true и false. Значение по умолчанию: false. Для MinIO вы должны установить значение true. |
| aws.s3.endpoint | Да | Конечная точка, которая используется для подключения к вашей S3-совместимой системе хранения вместо AWS S3. |
| aws.s3.access_key | Да | Access key вашего IAM-пользователя. |
| aws.s3.secret_key | Да | Secret key вашего IAM-пользователя. |
Microsoft Azure Storage
Azure Blob Storage
Если вы выбираете Blob Storage в качестве вашей системы хранения, выполните одно из следующих действий:
-
Чтобы выбрать метод аутентификации Shared Key, настройте
StorageCredentialParamsследующим образом:"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.blob.storage_account Да Имя пользователя вашей учетной записи Blob Storage. azure.blob.shared_key Да Shared key вашей учетной записи Blob Storage. -
Чтобы выбрать метод аутентификации SAS Token, настройте
StorageCredentialParamsследующим образом:"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.blob.storage_account Да Имя пользователя вашей учетной записи Blob Storage. azure.blob.container Да Имя blob container, который хранит ваши данные. azure.blob.sas_token Да SAS-токен, который используется для доступа к вашей учетной записи Blob Storage.
Azure Data Lake Storage Gen2
Если вы выбираете Data Lake Storage Gen2 в качестве вашей системы хранения, выполните одно из следующих действий:
-
Чтобы выбрать метод аутентификации Managed Identity, настройте
StorageCredentialParamsследующим образом:"azure.adls2.oauth2_use_managed_identity" = "true",
"azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>",
"azure.adls2.oauth2_client_id" = "<service_client_id>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.adls2.oauth2_use_managed_identity Да Указывает, включать ли метод аутентификации Managed Identity. Установите значение true.azure.adls2.oauth2_tenant_id Да ID tenant, данные которого вы хотите получить. azure.adls2.oauth2_client_id Да Client (application) ID управляемой идентичности. -
Чтобы выбрать метод аутентификации Shared Key, настройте
StorageCredentialParamsследующим образом:"azure.adls2.storage_account" = "<storage_account_name>",
"azure.adls2.shared_key" = "<storage_account_shared_key>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.adls2.storage_account Да Имя пользователя вашей учетной записи хранения Data Lake Storage Gen2. azure.adls2.shared_key Да Shared key вашей учетной записи хранения Data Lake Storage Gen2. -
Чтобы выбрать метод аутентификации Service Principal, настройте
StorageCredentialParamsследующим образом:"azure.adls2.oauth2_client_id" = "<service_client_id>",
"azure.adls2.oauth2_client_secret" = "<service_principal_client_secret>",
"azure.adls2.oauth2_client_endpoint" = "<service_principal_client_endpoint>"В следующей таблице описаны параметры, которые вам нужно настроить
in StorageCredentialParams.Параметр Обязательно Описание azure.adls2.oauth2_client_id Да Client (application) ID service principal. azure.adls2.oauth2_client_secret Да Значение нового client (application) secret, созданного. azure.adls2.oauth2_client_endpoint Да Конечная точка токена OAuth 2.0 (v1) service principal или application.
Azure Data Lake Storage Gen1
Если вы выбираете Data Lake Storage Gen1 в качестве вашей системы хранения, выполните одно из следующих действий:
-
Чтобы выбрать метод аутентификации Managed Service Identity, настройте
StorageCredentialParamsследующим образом:"azure.adls1.use_managed_service_identity" = "true"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.adls1.use_managed_service_identity Да Указывает, включать ли метод аутентификации Managed Service Identity. Установите значение true. -
Чтобы выбрать метод аутентификации Service Principal, настройте
StorageCredentialParamsследующим образом:"azure.adls1.oauth2_client_id" = "<application_client_id>",
"azure.adls1.oauth2_credential" = "<application_client_credential>",
"azure.adls1.oauth2_endpoint" = "<OAuth_2.0_authorization_endpoint_v2>"В следующей таблице описаны параметры, которые вам нужно настроить в
StorageCredentialParams.Параметр Обязательно Описание azure.adls1.oauth2_client_id Да Client (application) ID . azure.adls1.oauth2_credential Да Значение нового client (application) secret, созданного. azure.adls1.oauth2_endpoint Да Конечная точка токена OAuth 2.0 (v1) service principal или application.
opt_properties
Указывает некоторые дополнительные параметры, настройки которых применяются ко всей задаче загрузки. Синтаксис:
PROPERTIES ("<key1>" = "<value1>"[, "<key2>" = "<value2>" ...])
Поддерживаются следующие параметры:
-
timeoutУказывает период тайм-аута задачи загрузки. Единица измерения: секунда. Период тайм-аута по умолчанию составляет 4 часа. Мы рекомендуем указывать период тайм-аута короче 6 часов. Если задача загрузки не завершается в течение периода тайм-аута, Selena отменяет задачу загрузки, и статус задачи загрузки становится CANCELLED.
NOTE
В большинстве случаев вам не нужно устанавливать период тайм-аута. Мы рекомендуем устанавливать пери од тайм-аута только когда задача загрузки не может завершиться в течение периода тайм-аута по умолчанию.
Используйте следующую формулу для определения периода тайм-аута:
Период тайм-аута > (Общий размер файлов данных для загрузки x Общее количество файлов данных для загрузки и материализованных представлений, созданных на файлах данных)/Средняя скорость загрузки
NOTE
"Средняя скорость загрузки" - это средняя скорость загрузки для всего вашего кластера Selena. Средняя скорость загрузки варьируется для каждого кластера в зависимости от конфигурации сервера и максимального количества разрешенных параллельных задач запроса для кластера. Вы можете определить среднюю скорость загрузки на основе скоростей загрузки исторических задач загрузки.
Предположим, что вы хотите загрузить файл данных размером 1 ГБ, на котором созданы два материализованных представления, в кластер Selena, средняя скорость загрузки которого составляет 10 МБ/с. Время, необходимое для загрузки данных, составляет примерно 102 секунды.
(1 x 1024 x 3)/10 = 307.2 (секунда)
Для этого пр имера мы рекомендуем установить период тайм-аута в значение больше 308 секунд.
-
max_filter_ratioУказывает максимальную допустимую ошибку задачи загрузки. Максимальная допустимая ошибка - это максимальный процент строк, которые могут быть отфильтрованы в результате недостаточного качества данных. Допустимые значения:
0~1. Значение по умолчанию:0.-
Если вы установите этот параметр в
0, Selena не игнорирует неквалифицированные строки во время загрузки. Таким образом, если исходные данные содержат неквалифицированные строки, задача загрузки завершается с ошибкой. Это помогает гарантировать правильность данных, загруженных в Selena. -
Если вы установите этот параметр в значение больше
0, Selena может игнорировать неквалифицированные строки во время загрузки. Таким образом, задача загрузки может завершиться успешно, даже если исходные данные содержат неквалифицированные строки.NOTE
Строки, которые отфильтровываются из-за недостаточного качества данных, не включают строки, которые отфильтровываются предложением WHERE.
Если задача загрузки завершается с ошибкой, потому что максимальная допустимая ошибка установлена в
0, вы можете использовать SHOW LOAD для просмотра результата задачи. Затем определите, могут ли неквалифицированные строки быть отфильтрованы. Если неквалифицированные строки могут быть отфильтрованы, вычислите максимальную допустимую ошибку на основе значений, возвращенных дляdpp.abnorm.ALLиdpp.norm.ALLв результате задачи, настройте максимальную допустимую ошибку и снова отправьте задачу загрузки. Формула для вычисления максимальной допустимой ошибки следующая:max_filter_ratio= [dpp.abnorm.ALL/(dpp.abnorm.ALL+dpp.norm.ALL)]Сумма значений, возвращенных для
dpp.abnorm.ALLиdpp.norm.ALL, - это общее количество строк для загрузки. -
-
log_rejected_record_numУказывает максимальное количество неквалифицированных строк данных, которые могут быть зарегистрированы. Этот параметр поддерживается начиная с версии v1.5.2. Допустимые значения:
0,-1и любое ненулевое положительное целое число. Значение по умолчанию:0.- Значение
0указывает, что строки данных, которые отфильтровываются, не будут зарегистрированы. - Значение
-1указывает, что все строки данных, которые отфильтровываются, будут зарегистрированы. - Ненулевое положительное целое число, такое как
n, указывает, что доnстрок данных, которые отфильтровываются, могут быть зарегистрированы на каждом BE.
- Значение
-
load_mem_limitУказывает максимальный объем памяти, который может быть предоставлен задаче загрузки. Значение этого параметра не может превышать верхний предел памяти, поддерживаемый каждым узлом BE или CN. Единица измерения: байты: лимит памяти по умолчанию составляет 2 ГБ.
-
strict_modeУказывает, включать ли строгий режим. Допустимые значения:
trueиfalse. Значение по умолчанию:false.trueуказывает включить строгий режим, аfalseуказывает отключить строгий режим. -
timezoneУказывает часовой пояс задачи загрузки. Значение по умолчанию:
Asia/Shanghai. Настройка часового пояса влияет на результаты, возвращаемые такими функциями, как strftime, alignment_timestamp и from_unixtime. Для получения дополнительной информации см. Configure a time zone. Часовой пояс, указанный в параметреtimezone, является часовым поясом на уровне сессии. -
priorityУказывает приоритет задачи загрузки. Допустимые значения:
LOWEST,LOW,NORMAL,HIGHиHIGHEST. Значение по умолчанию:NORMAL. Broker Load предоставляет параметр FEmax_broker_load_job_concurrency, который определяет максимальное количество задач Broker Load, которые могут выполняться одновременно в вашем кластере Selena. Если количество задач Broker Load, которые отправляются в указанный период времени, превышает максимальное количество, избыточные задачи будут ожидать планирования на основе их приоритетов.Вы можете использовать выражение ALTER LOAD для изменения приоритета существующей задачи загрузки, которая находится в состоянии
QUEUEINGилиLOADING.Selena позволяет устанавливать параметр
priorityдля задачи Broker Load начиная с версии v1.5.2. -
partial_updateИспользовать ли частичные обновления. Допустимые значения:
TRUEиFALSE. Значение по умолчанию:FALSE, что указывает на отключение этой функции. -
partial_update_modeУказывает режим для частичных обновлений. Допустимые значения:
rowиcolumn.- Значение
row(по умолчанию) означает частичные обновления в режиме строк, который более подходит для обновлений в реальном времени с большим количеством столбцов и небольшими пакетами. - Значение
columnозначает частичные обновления в режиме столбцов, который более подходит для пакетных обновлений с небольшим количеством столбцов и большим количеством строк. В таких сценариях включение режима столбцов обеспечивает более высокую скорость обновления. Например, в таблице со 100 столбцами, если обновляются только 10 столбцов (10% от общего количества) для всех строк, скорость обновления в режиме столбцов в 10 раз быстрее.
- Значение
-
merge_conditionУказывает имя столбца, который вы хотите использовать в качестве условия для определения того, могут ли обновления вступить в силу. Обновление из исходной записи в целевую запись вступает в силу тол ько когда исходная запись данных имеет большее или равное значение, чем целевая запись данных в указанном столбце.
NOTE
Столбец, который вы указываете, не может быть столбцом первичного ключа. Кроме того, только таблицы, использующие Primary Key table, поддерживают условные обновления.
Selena поддерживает загрузку JSON-данных начиная с версии v1.5.2. Параметры следующие:
-
jsonpaths
Имена ключей, которые вы хотите загрузить из JSON-файла данных. Вам нужно указать этот параметр только когда вы загружаете JSON-данные, используя режим соответствия. Значение этого параметра в формате JSON. См. Configure column mapping for JSON data loading.
-
strip_outer_array
Указывает, удалять ли самую внешнюю структуру массива. Допустимые значения:
trueиfalse. Значение по умолчанию:false.В реальных бизнес-сценариях JSON-данные могут иметь самую внешнюю структуру массива, обозначенную парой квадратных скобок
[]. В этой ситуации мы рекомендуем установить этот параметр вtrue, чтобы Selena удалила самые внешние квадратные скобки[]и загрузила каждый внутренний массив как отдельную запись данных. Если вы установите этот параметр вfalse, Selena анализирует весь JSON-файл данных в один массив и загружает массив как одну запись данных. Например, JSON-данные -[ {"category" : 1, "author" : 2}, {"category" : 3, "author" : 4} ]. Если вы установите этот параметр вtrue,{"category" : 1, "author" : 2}и{"category" : 3, "author" : 4}анализируются в отдельные записи данных, которые загружаются в отдельные строки таблицы Selena. -
json_root
Корневой элемент JSON-данных, которые вы хотите загрузить из JSON-файла данных. Вам нужно указать этот параметр только когда вы загружаете JSON-данные, используя режим соответствия. Значение этого параметра - допустимая строка JsonPath. По умолчанию значение этого параметра пустое, что указывает, что все данные JSON-файла данных будут загружены. Для получения дополнительной информации см. раздел "Load JSON data using matched mode with root element specified" этой темы.
При загрузке JSON-данных также обратите внимание, что размер каждого JSON-объекта не может превышать 4 ГБ. Если отдельный JSON-объе кт в JSON-файле данных превышает 4 ГБ, выдается ошибка "This parser can't support a document that big.".
Сопоставление столбцов
Настройка сопоставления столбцов для загрузки CSV-данных
Если столбцы файла данных могут быть сопоставлены один к одному последовательно со столбцами таблицы Selena, вам не нужно настраивать сопоставление столбцов между файлом данных и таблицей Selena.
Если столбцы файла данных не могут быть сопоставлены один к одному последовательно со столбцами таблицы Selena, вам нужно использовать параметр columns для настройки сопоставления столбцов между файлом данных и таблицей Selena. Это включает следующие два случая использования:
-
Одинаковое количество столбцов, но разная последовательность столбцов. Кроме того, данные из файла данных не нужно вычислять функциями перед загрузкой в соответствующие столбцы таблицы Selena.
В параметре
columnsвам нужно указать имена столбцов таблицы Selena в той же последовательности, в которой расположены столбцы файла данных.Например, таблица Selena состоит из трех столбцов, которые представляют собой
col1,col2иcol3последовательно, а файл данных также состоит из трех столбцов, которые могут быть сопоставлены со столбцами таблицы Selenacol3,col2иcol1последовательно. В этом случае вам нужно указать"columns: col3, col2, col1". -
Разное количество столбцов и разная последовательность столбцов. Кроме того, данные из файла данных нужно вычислить функциями перед загрузкой в соответствующие столбцы таблицы Selena.
В параметре
columnsвам нужно указать имена столбцов таблицы Selena в той же последовательности, в которой расположены столбцы файла данных, и указать функции, которые вы хотите использовать для вычисления данных. Два примера следующие:- Таблица Selena состоит из трех столбцов, которые представляют собой
col1,col2иcol3последовательно. Файл данных состоит из четырех столбцов, среди которых первые три столбца могут быть сопоставлены последовательно со столбцами таблицы Selenacol1,col2иcol3, а четвертый столбец не может быть сопоставлен ни с одним из столбцов таблицы Selena. В этом случае вам нужно временно указать имя для четвертого столбца файла данных, и временное имя должно отличаться от любого из имен столбцов таблицы Selena. Например, вы можете указать"columns: col1, col2, col3, temp", где четвертый столбец файла данных временно названtemp. - Таблица Selena состоит из трех столбцов, которые представляют собой
year,monthиdayпоследовательно. Файл данных состоит только из одного столбца, который содержит значения даты и времени в форматеyyyy-mm-dd hh:mm:ss. В этом случае вы можете указать"columns: col, year = year(col), month=month(col), day=day(col)", гдеcol- временное имя столбца файла данных, а функцииyear = year(col),month=month(col)иday=day(col)используются для извлечения данных из столбца файла данныхcolи загрузки данных в соответствующие столбцы таблицы Selena. Например,year = year(col)используется для извлечения данныхyyyyиз столбца файла данныхcolи загрузки данных в столбец таблицы Selenayear.
- Таблица Selena состоит из трех столбцов, которые представляют собой
Для подробных примеров см. Configure column mapping.
Настройка сопоставления столбцов для загрузки JSON-данных
Если ключи JSON-документа имеют те же имена, что и столбцы таблицы Selena, вы можете загрузить JSON-форматированные данные, используя простой режим. В простом режиме вам не нужно указывать параметр jsonpaths. Этот режим требует, чтобы JSON-форматированные данные были объектом, обозначенным фигурными скобками {}, например {"category": 1, "author": 2, "price": "3"}. В этом примере category, author и price - имена ключей, и эти ключи могут быть сопоставлены один к одному по имени со столбцами category, author и price таблицы Selena.
Если ключи JSON-документа имеют разные имена, чем столбцы таблицы Selena, вы можете загрузить JSON-форматированные данные, используя режим соответствия. В режиме соответствия вам нужно использовать параметры jsonpaths и COLUMNS для указания сопоставления столбцов между JSON-документом и таблицей Selena:
- В параметре
jsonpathsукажите ключи JSON в последовательности, в которой они расположены в JSON-документе. - В параметре
COLUMNSукажите сопоставление между ключами JSON и столбцами таблицы Selena:- Имена столбцов, указанные в параметре
COLUMNS, сопоставляются один к одному последовательно с ключами JSON. - Имена столбцов, указанные в параметре
COLUMNS, сопоставляются один к одному по имени со столбцами таблицы Selena.
- Имена столбцов, указанные в параметре
Для примеров загрузки JSON-форматированных данных с использованием режима соответствия см. Load JSON data using matched mode.
Связанные параметры конфигурации
Параметр конфигурации FE max_broker_load_job_concurrency указывает максимальное количество задач Broker Load, которые могут выполняться одновременно в вашем кластере Selena.
В Selena v1.5.2 и более ранних, если общее количество задач Broker Load, которые отправляются в течение определенного периода времени, превышает максимальное количество, избыточные задачи будут поставлены в очередь и запланированы на основе времени их отправки.
Начиная с Selena v1.5.2, если общее количество задач Broker Load, которые отправляются в течение определенного периода времени, превышает максимальное количество, избыточные задачи ставятся в очередь и планируются на основе их приоритетов. Вы можете указать приоритет для задачи, используя параметр priority, описанный выше. Вы можете использовать ALTER LOAD для изменения приоритета существующей задачи, которая находится в состоянии QUEUEING или LOADING.
Разделение и параллельное выполнение задач
Задача Broker Load может быть разделена на одну или несколько подзадач, которые выполняются параллельно. Подзадачи в рамках задачи загрузки выполняются в рамках одной транзакции. Они все должны либо успешно завершиться, либо завершиться с ошибкой. Selena разделяет каждую задачу загрузки на основе того, как вы объявляете data_desc в выражении LOAD:
-
Если вы объявляете несколько параметров
data_desc, каждый из которых указывает отдельную таблицу, создается подзадача для загрузки данных каждой таблицы. -
Если вы объявляете несколько параметров
data_desc, каждый из которых указывает отдельную партицию для одной и той же таблицы, создается подзадача для загрузки данных каждой партиции.
Кроме того, каждая подзадача может быть дополнительно разделена на один или несколько экземпляров, которые равномерно распределяются и параллельно выполняются на узлах BE или CN вашего кластера Selena. Selena разделяет каждую подзадачу на основе параметра FE min_bytes_per_broker_scanner и количества узлов BE или CN. Вы можете использовать следующую формулу для расчета количества экземпляров в отдельной подзадаче:
Количество экземпляров в отдельной подзадаче = min(Объем данных для загрузки отдельной подзадачей/min_bytes_per_broker_scanner, Количество узлов BE/CN)
В большинстве случаев для каждой задачи загрузки объявляется только один data_desc, каждая задача загрузки разделяется только на одну подзадачу, а подзадача разделяется на такое же количество экземпляров, как количество узлов BE или CN.
Примеры
Этот раздел использует HDFS в качестве примера для описания различных конфигураций загрузки.
Загрузка CSV-данных
Этот раздел использует CSV в качестве примера для объяснения различных конфигураций параметров, которые вы можете использовать для удовлетворения ваших разнообразных требований к загрузке.
Установка периода тайм-аута
Ваша база данных Selena test_db содержит таблицу с именем table1. Таблица состоит из трех столбцов, которые представляют собой col1, col2 и col3 последовательно.
Ваш файл данных example1.csv также состоит из трех столбцов, которые сопоставляются последовательно с col1, col2 и col3 таблицы table1.
Если вы хотите загрузить все данные из example1.csv в table1 в течение до 3600 секунд, выполните следующую команду:
LOAD LABEL test_db.label1
(
DATA INFILE("hdfs://<hdfs_host>:<hdfs_port>/user/selena/data/input/example1.csv")
INTO TABLE table1
)
WITH BROKER
(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
)
PROPERTIES
(
"timeout" = "3600"
);
Установка максимальной допустимой ошибки
Ваша база данных Selena test_db содержит таблицу с именем table2. Таблица состоит из трех столбцов, которые представляют собой col1, col2 и col3 последовательно.
Ваш файл данных example2.csv также состоит из трех столбцов, которые сопоставляются последовательно с col1, col2 и col3 таблицы table2.
Если вы хотите загрузить все данные из example2.csv в table2 с максимальной допустимой ошибкой 0.1, выполните следующую команду:
LOAD LABEL test_db.label2
(
DATA INFILE("hdfs://<hdfs_host>:<hdfs_port>/user/selena/data/input/example2.csv")
INTO TABLE table2
)
WITH BROKER
(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
)
PROPERTIES
(
"max_filter_ratio" = "0.1"
);