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

Stream Load

1. Поддерживает ли Stream Load определение имен столбцов, содержащихся в первых нескольких строках CSV-файла, или пропуск первых нескольких строк при чтении данных?

Stream Load не поддерживает определение имен столбцов, содержащихся в первых нескольких строках CSV-файла. Stream Load рассматривает первые несколько строк как обычные данные, как и остальные строки.

В версии 2.5 и более ранних Stream Load не поддерживает пропуск первых нескольких строк CSV-файла при чтении данных. Если первые несколько строк CSV-файла, который вы хотите загрузить, содержат имена столбцов, выполните одно из следующих действий:

  • Измените настройки инструмента, который вы используете для экспорта данных. Затем повторно экспортируйте данные как CSV-файл, который не содержит имена столбцов в первых нескольких строках.
  • Используйте команды типа sed -i '1d' filename для удаления первых нескольких строк CSV-файла.
  • В команде или операторе загрузки используйте -H "where: <column_name> != '<column_name>'" для фильтрации первых нескольких строк CSV-файла. <column_name> — это любое из имен столбцов, содержащихся в первых нескольких строках. Обратите внимание, что Selena сначала преобразует, а затем фильтрует исходные данные. Поэтому, если имена столбцов в первых нескольких строках не удается преобразовать в соответствующие типы данных назначения, для них возвращаются значения NULL. Это означает, что целевая таблица Selena не может содержать столбцы, для которых установлено NOT NULL.
  • В команде или операторе загрузки добавьте -H "max_filter_ratio:0.01" для установки максимальной допустимой погрешности в 1% или меньше, но которая может допустить несколько строк с ошибками, тем самым позволяя Selena игнорировать сбои преобразования данных в первых нескольких строках. В этом случае задание Stream Load все еще может завершиться успешно, даже если возвращается ErrorURL, указывающий на строки с ошибками. Не устанавливайте max_filter_ratio в большое значение. Если вы установите max_filter_ratio в большое значение, некоторые важные проблемы качества данных могут быть пропущены.

Начиная с версии 1.5.0, Stream Load поддерживает параметр skip_header, который указывает, следует ли пропускать первые несколько строк CSV-файла. Для получения дополнительной информации см. Параметры CSV.

2. Данные, которые нужно загрузить в столбец раздела, не имеют стандартного типа DATE или INT. Например, данные представлены в формате типа 202106.00. Как преобразовать данные при загрузке с помощью Stream Load?

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

Предположим, что вы хотите загрузить CSV-файл с именем TEST, который состоит из четырех столбцов: NO, DATE, VERSION и PRICE, среди которых данные из столбца DATE представлены в нестандартном формате, таком как 202106.00. Если вы хотите использовать DATE в качестве столбца раздела в Selena, вам нужно сначала создать таблицу Selena, например, состоящую из следующих четырех столбцов: NO, VERSION, PRICE и DATE. Затем вам нужно указать тип данных столбца DATE таблицы Selena как DATE, DATETIME или INT. Наконец, при создании задания Stream Load вам нужно указать следующую настройку в команде или операторе загрузки для преобразования данных из типа данных исходного столбца DATE в тип данных целевого столбца:

-H "columns: NO,DATE_1, VERSION, PRICE, DATE=LEFT(DATE_1,6)"

В приведенном выше примере DATE_1 можно рассматривать как временно именованный столбец, сопоставляемый с целевым столбцом DATE, а окончательные результаты, загруженные в целевой столбец DATE, вычисляются функцией left(). Обратите внимание, что вы должны сначала перечислить временные имена исходных столбцов, а затем использовать функции для преобразования данных. Поддерживаемые функции — это скалярные функции, включая неагрегатные функции и оконные функции.

3. Что делать, если мое задание Stream Load выдает ошибку "body exceed max size: 10737418240, limit: 10737418240"?

Размер исходного файла данных превышает 10 ГБ, что является максимальным размером файла, поддерживаемым Stream Load. Выполните одно из следующих действий:

  • Используйте seq -w 0 n для разделения исходного файла данных на более мелкие файлы.
  • Используйте curl -XPOST http://be_host:http_port/api/update_config?streaming_load_max_mb=<file_size> для настройки значения параметра конфигурации BE streaming_load_max_mb для увеличения максимального размера файла.