Parquet
В этом документе описана поддержка чтения и записи файлов формата Parquet в Doris. Она применяется к следующим возможностям:
- Чтение и запись данных в Catalog.
- Чтение данных с помощью Table Valued Functions.
- Чтение данных с помощью Broker Load.
- Запись данных при выполнении Export.
- Запись данных с помощью Outfile.
Поддерживаемые форматы сжатия
- uncompressed
- snappy
- lz4
- zstd
- gzip
- lzo
- brotli
Параметры
Совместимость временных меток и дат (начиная с 4.1.5)
Начиная с 4.1.5, при чтении и записи Parquet сохраняется различие между локальным календарным временем и моментами времени. Логическая временная метка без часового пояса сопоставляется с DATETIME; логическая временная метка с isAdjustedToUTC=true сопоставляется с TIMESTAMPTZ. Ни свойство совместимости Catalog, ни enable_mapping_timestamp_tz=false в файловой TVF не позволяют восстановить сопоставление с DATETIME во втором случае.
Parquet INT96 не содержит аннотации часового пояса и определяется как DATETIME(6). В Hive Catalog и файловых TVF поддерживается необязательное свойство hive.parquet.time-zone, позволяющее указать часовой пояс, использованный при записи INT96. По умолчанию оно имеет значение пустой строки, что сохраняет локальное календарное время. Используйте часовой пояс IANA или смещение относительно UTC от -12:00 до +14:00. Значения UTC и GMT принимаются; короткие псевдонимы, такие как CST и PRC, отклоняются. Задавайте это свойство только тогда, когда известен часовой пояс, использованный при записи, например: "hive.parquet.time-zone" = "Asia/Shanghai".
Начиная с 4.1.5, enable_int96_timestamps по умолчанию имеет значение false для Outfile и Export, которые записывают логические временные метки INT64. Устанавливайте значение true только для систем, которым требуется INT96. При записи таблиц Hive используется другой вариант обеспечения совместимости; см. Hive Catalog.
Файлы DATE, записанные с использованием прежнего кодирования Doris и содержащие значения от 0000-01-01 до 0000-02-28, требуют миграции с учётом средства, которым они были записаны. Обновление только средства чтения не позволяет исправить такие файлы. См. Миграция файлов DATE с нулевым годом.
Переменные сеанса
-
enable_parquet_lazy_mat(2.1+, 3.0+)Определяет, включена ли отложенная материализация в Parquet Reader. Значение по умолчанию: true.
-
hive_parquet_use_column_names(2.1.6+, 3.0.3+)При чтении типов данных Parquet из таблиц Hive Doris по умолчанию читает данные из тех столбцов файла Parquet, имена которых совпадают с именами столбцов таблицы Hive. Если эта переменная имеет значение
false, Doris читает данные из файла Parquet в соответствии с порядком столбцов в таблице Hive, независимо от их имён. Это аналогично переменнойparquet.column.index.accessв Hive. Этот параметр применяется только к именам столбцов верхнего уровня и не действует для столбцов внутри Structs.
Конфигурация BE
-
parquet_metadata_size_limit(начиная с 4.1.5)Максимальный размер сериализованных метаданных в конце файла для нативного Parquet V2 Reader. Значение по умолчанию составляет
268435456байт (256 MiB), должно быть больше0и поддерживает динамическое обновление. Это ограничение задаётся отдельно от ограничения Page Header. При его превышении возвращается ошибкаParquet v2 footer size ... exceeds metadata limit .... См. Конфигурация BE. -
enable_parquet_page_index(2.1.5+, 3.0+)Определяет, использует ли Parquet Reader индекс Page Index для фильтрации данных. Параметр предназначен только для отладки на случай, если индекс страниц иногда некорректно отфильтровывает данные. Значение по умолчанию: false.
-
parquet_header_max_size_mb(2.1+, 3.0+)Максимальный размер буфера, выделяемого при чтении заголовка Parquet Page. Значение по умолчанию: 1M.
-
parquet_rowgroup_max_buffer_mb(2.1+, 3.0+)Максимальный размер буфера, выделяемого при чтении Parquet Row Group. Значение по умолчанию: 128M.
-
parquet_column_max_buffer_mb(2.1+, 3.0+)Максимальный размер буфера, выделяемого при чтении столбца внутри Parquet Row Group. Значение по умолчанию: 8M.