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

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

Общие вопросы о загрузке​

Ошибка "[DATA_QUALITY_ERROR] Encountered unqualified data"​

Описание проблемы: Ошибка качества данных при загрузке.

Решение:

  • Операции Stream Load и Insert Into возвращают URL с описанием ошибок. Для Broker Load этот URL можно получить с помощью команды Show Load.
  • Откройте URL с описанием ошибок в браузере или с помощью команды curl, чтобы узнать конкретные причины ошибок качества данных.
  • Используйте параметры strict_mode и max_filter_ratio для управления допустимой долей ошибок.

Ошибка "[E-235] Failed to init rowset builder"​

Описание проблемы: Ошибка -235 возникает, когда загрузка выполняется слишком часто и данные не успевают пройти компактацию, из-за чего превышается лимит числа версий.

Решение:

  • Увеличьте размер пакета при загрузке данных и уменьшите частоту загрузок.
  • Увеличьте значение параметра max_tablet_version_num в be.conf. Рекомендуется не превышать 5000.

Ошибка "[E-238] Too many segments in rowset"​

Описание проблемы: Ошибка -238 возникает, когда число сегментов в одном rowset превышает лимит.

Распространённые причины:

  • При создании таблицы задано слишком малое число бакетов.
  • Данные распределены неравномерно; попробуйте выбрать ключи, обеспечивающие более равномерное распределение по бакетам.

Ошибка "Transaction commit successfully, BUT data will be visible later"​

Описание проблемы: Данные успешно загружены, но временно недоступны для чтения.

Причина: Обычно это связано с задержкой публикации транзакции из-за высокой нагрузки на системные ресурсы.

Ошибка "Failed to commit kv txn [...] Transaction exceeds byte limit"​

Описание проблемы: В режиме shared-nothing в одной загрузке участвует слишком много разделов и таблетов, из-за чего превышается лимит размера транзакции.

Решение:

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

Лишний символ "\r" в последнем столбце файла CSV​

Описание проблемы: Обычно проблема вызвана окончаниями строк Windows.

Решение: Укажите правильный разделитель строк: -H "line_delimiter:\r\n"

Данные CSV в кавычках загружаются как null​

Описание проблемы: Данные CSV, заключённые в кавычки, после загрузки превращаются в null.

Решение: Используйте параметр trim_double_quotes, чтобы удалить двойные кавычки вокруг полей.

Stream Load​

Причины медленной загрузки​

  • Нехватка ресурсов CPU, IO, памяти или сетевой карты.
  • Медленное сетевое соединение между клиентским компьютером и узлами BE. Для первоначальной диагностики можно проверить задержку ping от клиента до узлов BE.
  • Ограничение по числу потоков веб-сервера: слишком много одновременных операций Stream Load на одном BE (больше значения webserver_num_workers в be.conf) может привести к нехватке потоков.
  • Ограничение по числу потоков Memtable Flush: проверьте метрику BE doris_be_flush_thread_pool_queue_size, чтобы оценить размер очереди. Проблему можно решить, увеличив значение параметра flush_thread_num_per_store в be.conf.

Обработка специальных символов в именах столбцов​

Если имена столбцов содержат специальные символы, задайте параметр columns в одинарных кавычках, заключив имена столбцов в обратные кавычки:

curl --location-trusted -u root:"" \
-H 'columns:`@coltime`,colint,colvar' \
-T a.csv \
-H "column_separator:," \
http://127.0.0.1:8030/api/db/loadtest/_stream_load

Маленькие пакеты при загрузке через Kafka Connect или Confluent​

Если задание Doris Kafka Connector часто отправляет небольшие запросы Stream Load, проверьте настройки его буфера. Например, если в текущей конфигурации заданы buffer.count.records=10000 и buffer.size.bytes=5000000, попробуйте увеличить размер пакетов:

buffer.count.records=50000
buffer.size.bytes=104857600

Эти параметры относятся к Doris Kafka Connector, а не к общим настройкам Confluent. Они задают пороговые значения числа записей и размера пакета в байтах. Увеличение буфера может уменьшить число запросов на загрузку, но требует больше памяти для задания Kafka Connect и может увеличить задержку. Также проверьте buffer.flush.time: этот параметр может вызвать отправку пакета до достижения любого из пороговых значений размера. Параметры и значения по умолчанию для используемой версии коннектора приведены в разделе Doris Kafka Connector.

Routine Load​

Основные исправления ошибок​

Описание проблемыУсловия возникновенияОбласть влиянияВременное решениеЗатронутые версииВерсии с исправлениемPR с исправлением
Если хотя бы в одном задании возникает тайм-аут при подключении к Kafka, это влияет на загрузку в других заданиях и замедляет все загрузки Routine Load.Хотя бы в одном задании возникает тайм-аут при подключении к Kafka.Shared-nothing и shared-storageОстановите или вручную приостановите задание, чтобы устранить проблему.<2.1.9 <3.0.52.1.9 3.0.5#47530
После перезапуска FE Master возможна потеря пользовательских данных.Для смещения задания задано значение OFFSET_END, и выполняется перезапуск FE.Shared-storageИзмените режим потребления на OFFSET_BEGINNING.3.0.2-3.0.43.0.5#46149
При загрузке создаётся большое число мелких транзакций, из-за чего компактация завершается сбоем и постоянно возникают ошибки -235.Doris потребляет данные слишком быстро или данные из Kafka поступают маленькими пакетами.Shared-nothing и shared-storageПриостановите задание Routine Load и выполните следующую команду: ALTER ROUTINE LOAD FOR jobname FROM kafka ("property.enable.partition.eof" = "false");<2.1.8 <3.0.42.1.8 3.0.4#45528, #44949, #39975
Деструктор сторонней библиотеки Kafka зависает, из-за чего потребление данных прекращается.Удаление топика Kafka (возможны и другие условия).Shared-nothing и shared-storageПерезапустите все узлы BE.<2.1.8 <3.0.42.1.8 3.0.4#44913
Планирование Routine Load зависает.При отмене транзакции в Meta Service узлом FE возникает тайм-аут.Shared-storageПерезапустите узел FE.<3.0.23.0.2#41267
Проблема с перезапуском Routine Load.Перезапуск узлов BE.Shared-nothing и shared-storageВручную возобновите задание.<2.1.7 <3.0.22.1.7 3.0.2#40728

Оптимизация конфигурации по умолчанию​

ИзменениеВерсии, в которых примененоСоответствующий PR
Увеличено время ожидания для Routine Load.2.1.7 3.0.3#42042, #40818
Изменено значение по умолчанию для max_batch_interval.2.1.8 3.0.3#42491
Снято ограничение на max_batch_interval.2.1.5 3.0.0#29071
Изменены значения по умолчанию для max_batch_rows и max_batch_size.2.1.5 3.0.0#36632

Улучшения наблюдаемости​

ИзменениеВерсии, в которых примененоСоответствующий PR
Добавлены метрики для улучшения наблюдаемости.3.0.5#48209, #48171, #48963

Ошибка "failed to get latest offset"​

Описание проблемы: Routine Load не может получить последнее смещение Kafka.

Распространённые причины:

  • Обычно причина в проблемах сетевого соединения с Kafka. Проверьте доступность Kafka по доменному имени с помощью ping или telnet.
  • Тайм-аут из-за ошибки в сторонней библиотеке, сообщение об ошибке: java.util.concurrent.TimeoutException: Waited X seconds

Ошибка "failed to get partition meta: Local:'Broker transport failure"​

Описание проблемы: Routine Load не может получить метаданные разделов топика Kafka.

Распространённые причины:

  • Обычно причина в проблемах сетевого соединения с Kafka. Проверьте доступность Kafka по доменному имени с помощью ping или telnet.
  • Если используются доменные имена, попробуйте настроить их сопоставление с адресами в /etc/hosts

Ошибка "Broker: Offset out of range"​

Описание проблемы: Смещение, с которого выполняется потребление, отсутствует в Kafka. Возможно, соответствующие данные уже удалены при очистке Kafka.

Решение:

  • Укажите новое смещение для потребления, например OFFSET_BEGINNING.
  • Настройте подходящие параметры очистки логов Kafka с учётом скорости загрузки: log.retention.hours, log.retention.bytes и т. д.