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.