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

Часто задаваемые вопросы по загрузке данных

1. Что делать, если возникает ошибка "close index channel failed" или "too many tablet versions"?

Вы запускали задания загрузки слишком часто, и данные не были своевременно уплотнены. В результате количество версий данных, созданных во время загрузки, превышает максимальное количество (по умолчанию 1000) разрешенных версий данных. Используйте один из следующих методов для решения этой проблемы:

  • Увеличьте объем данных, загружаемых в каждом отдельном задании, тем самым снизив частоту загрузки.

  • Измените некоторые параметры конфигурации в файле конфигурации BE be.conf каждого BE для ускорения compaction:

    • Для таблиц Duplicate Key, Aggregate и Unique Key вы можете соответствующим образом увеличить значения cumulative_compaction_num_threads_per_disk, base_compaction_num_threads_per_disk и cumulative_compaction_check_interval_seconds. Пример:

      cumulative_compaction_num_threads_per_disk = 4
      base_compaction_num_threads_per_disk = 2
      cumulative_compaction_check_interval_seconds = 2
    • Для таблиц Primary Key вы можете соответствующим образом увеличить значение update_compaction_num_threads_per_disk и уменьшить значение update_compaction_per_tablet_min_interval_seconds.

    После изменения настроек указанных параметров конфигурации необходимо следить за памятью и I/O, чтобы убедиться, что они работают нормально.

2. Что делать, если возникает ошибка "Label Already Exists"?

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

Задания Stream Load отправляются по HTTP. В общем случае логика повтора запросов встроена в HTTP-клиенты всех языков программирования. Когда кластер Selena получает запрос на задание загрузки от HTTP-клиента, он немедленно начинает обрабатывать запрос, но не возвращает результат задания HTTP-клиенту своевременно. В результате HTTP-клиент снова отправляет тот же запрос на задание загрузки. Однако кластер Selena уже обрабатывает первый запрос и поэтому возвращает ошибку Label Already Exists для второго запроса.

Выполните следующие действия, чтобы проверить, что задания загрузки, отправленные с использованием разных методов загрузки, не имеют одинаковых меток и не отправляются повторно:

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

    ПРИМЕЧАНИЕ

    Кластер Selena не различает метки заданий загрузки на основе методов загрузки. Поэтому задания загрузки, отправленные с использованием разных методов загрузки, могут иметь одинаковые метки.

  • Выполните SHOW LOAD WHERE LABEL = "xxx", чтобы проверить задания загрузки с одинаковыми метками, находящиеся в состоянии FINISHED.

    ПРИМЕЧАНИЕ

    xxx - это метка, которую вы хотите проверить.

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

3. Что делать, если возникает ошибка "ETL_QUALITY_UNSATISFIED; msg:quality not good enough to cancel"?

Выполните SHOW LOAD и используйте URL ошибки в возвращенном результате выполнения для просмотра деталей ошибки.

Распространенные ошибки качества данных следующие:

  • "convert csv string to INT failed."

    Строки из исходного столбца не удалось преобразовать в тип данных соответствующего целевого столбца. Например, abc не удалось преобразовать в числовое значение.

  • "the length of input is too long than schema."

    Значения из исходного столбца имеют длину, которая не поддерживается соответствующим целевым столбцом. Например, значения исходного столбца типа CHAR превышают максимальную длину целевого столбца, указанную при создании таблицы, или значения исходного столбца типа INT превышают 4 байта.

  • "actual column number is less than schema column number."

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

  • "actual column number is more than schema column number."

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

  • "the frac part length longer than schema scale."

    Десятичные части значений из исходного столбца типа DECIMAL превышают указанную длину.

  • "the int part length longer than schema precision."

    Целые части значений из исходного столбца типа DECIMAL превышают указанную длину.

  • "there is no corresponding partition for this key."

    Значение в столбце раздела для исходной строки не находится в диапазоне раздела.

4. Что делать, если истекает время ожидания RPC?

Проверьте настройку параметра конфигурации write_buffer_size в файле конфигурации BE be.conf каждого BE. Этот параметр конфигурации используется для управления максимальным размером блока памяти на BE. Максимальный размер по умолчанию составляет 100 МБ. Если максимальный размер чрезмерно велик, может истечь время ожидания удаленного вызова процедур (RPC). Для решения этой проблемы настройте параметры write_buffer_size и tablet_writer_rpc_timeout_sec в файле конфигурации BE. Для получения дополнительной информации см. Конфигурации BE.

5. Что делать, если возникает ошибка "Value count does not match column count"?

После того как мое задание загрузки завершилось неудачей, я использовал URL ошибки, возвращенный в результате задания, для получения деталей ошибки и обнаружил ошибку "Value count does not match column count", которая указывает на несоответствие между количеством столбцов в файле исходных данных и количеством столбцов в целевой таблице Selena:

Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:00Z,cpu0,80.99
Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:10Z,cpu1,75.23
Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:20Z,cpu2,59.44

Причина этой проблемы следующая:

Разделитель столбцов, указанный в команде или операторе загрузки, отличается от разделителя столбцов, который фактически используется в файле исходных данных. В приведенном выше примере файл данных в формате CSV состоит из трех столбцов, которые разделены запятыми (,). Однако в команде или операторе загрузки в качестве разделителя столбцов указан \t. В результате три столбца из файла исходных данных неправильно разбираются в один столбец.

Укажите запятые (,) в качестве разделителя столбцов в команде или операторе загрузки. Затем отправьте задание загрузки снова.