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

ORC

В этом документе описана поддержка чтения и записи файлов формата ORC в Doris. Она распространяется на следующие возможности:

  • Чтение и запись данных в Catalog.
  • Чтение данных с помощью Table Valued Functions.
  • Чтение данных с помощью Broker Load.
  • Запись данных при выполнении Export.
  • Запись данных с помощью Outfile.

Поддерживаемые форматы сжатия​

  • uncompressed
  • snappy
  • lz4
  • zstd
  • lzo
  • zlib

Параметры​

Совместимость временных меток и дат (начиная с 4.1.5)​

Начиная с 4.1.5, в ORC TIMESTAMP представляет локальное время без часового пояса, а TIMESTAMP_INSTANT представляет момент времени и соответствует типу TIMESTAMPTZ. При чтении наносекунды округляются до микросекунд. Значения вне допустимого диапазона и недопустимые значения наносекунд вызывают ошибки.

При записи ORC некоторые отрицательные дробные временные метки непосредственно перед началом эпохи Unix невозможно представить без потери данных. Doris возвращает ошибку ORC cannot represent pre-epoch timestamp fractions in [-0.999, 0) seconds without data loss; use Parquet for these values. Для данных, содержащих такие значения, используйте Parquet.

Файлы DATE, записанные с использованием прежней кодировки Doris и содержащие значения от 0000-01-01 до 0000-02-28, требуют явной миграции. См. раздел Миграция файлов DATE с нулевым годом.

Переменные сеанса​

  • enable_orc_lazy_mat (2.1+, 3.0+)

    Определяет, включает ли ORC Reader отложенную материализацию. Значение по умолчанию: true.

  • hive_orc_use_column_names (2.1.6+, 3.0.3+)

    При чтении типов данных ORC из таблиц Hive Doris по умолчанию читает данные из столбцов файла ORC, имена которых совпадают с именами столбцов таблицы Hive. Если эта переменная установлена в false, Doris читает данные из файла ORC в соответствии с порядком столбцов в таблице Hive, независимо от их имён. Это аналогично переменной orc.force.positional.evolution в Hive. Этот параметр применяется только к именам столбцов верхнего уровня и не действует на столбцы внутри Structs.

  • orc_tiny_stripe_threshold_bytes (2.1.8+, 3.0.3+)

    Если размер Stripe в файле ORC в байтах меньше orc_tiny_stripe_threshold, он считается Tiny Stripe. Для нескольких последовательных Tiny Stripes выполняется оптимизация чтения: несколько Tiny Stripes считываются за один раз, что сокращает количество операций IO. Чтобы отключить эту оптимизацию, установите значение 0. Значение по умолчанию: 8M.

  • orc_once_max_read_bytes (2.1.8+, 3.0.3+)

    При использовании оптимизации чтения Tiny Stripe несколько Tiny Stripes объединяются в одну операцию IO. Этот параметр задаёт максимальное количество байтов для каждого запроса IO. Не следует устанавливать значение меньше orc_tiny_stripe_threshold. Значение по умолчанию: 8M.

  • orc_max_merge_distance_bytes (2.1.8+, 3.0.3+)

    При использовании оптимизации чтения Tiny Stripe два считываемых Tiny Stripes могут не следовать непосредственно друг за другом. Если расстояние между ними превышает значение этого параметра, они не объединяются в одну операцию IO. Значение по умолчанию: 1M.

  • orc_tiny_stripe_amplification_factor (3.1.0+)

    Если файл ORC содержит много столбцов, а запрос использует лишь несколько из них, оптимизация Tiny Stripe может привести к значительному увеличению объёма считываемых данных. Оптимизация чтения Tiny Stripe применяется, когда отношение объёма фактически считываемых байтов к полному объёму Stripe превышает значение этого параметра. Значение по умолчанию: 0.4, минимальное значение: 0.

  • check_orc_init_sargs_success (3.1.0+)

    Проверяет, успешно ли выполнено проталкивание предикатов в ORC. Используется для отладки. Значение по умолчанию: false.

Конфигурация BE​

  • orc_natural_read_size_mb (2.1+, 3.0+)

    Максимальное количество байтов, которое ORC Reader считывает за один раз. Значение по умолчанию: 8 MB.