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

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.