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

PARQUET_META

Табличная функция parquet_meta (tvf) позволяет читать метаданные Footer файлов Parquet без сканирования страниц данных. С её помощью можно быстро просматривать статистику Row Group, Schema, метаданные уровня файла, метаданные KV и результаты проверок Bloom Filter.

Это экспериментальная функция, поддерживаемая начиная с версии 4.1.0.

Синтаксис​

PARQUET_META(
"uri" = "<uri>",
"mode" = "<mode>",
{OptionalParameters},
{ConnectionParameters}
);
  • uri

    Путь к файлу.

  • mode

    Режим запроса метаданных. Необязательный параметр, по умолчанию — parquet_metadata. Возможные значения приведены в разделе «Поддерживаемые режимы».

  • {OptionalParameters}

    • column: обязателен для режима parquet_bloom_probe, задаёт имя столбца для проверки.
    • value: обязателен для режима parquet_bloom_probe, задаёт литеральное значение для проверки.
  • {ConnectionParameters}

    Параметры, необходимые для доступа к системе хранения, в которой находится файл. Подробнее см.:

Поддерживаемые режимы​

parquet_metadata​

Режим по умолчанию.

Этот режим позволяет запрашивать метаданные, содержащиеся в файлах Parquet. Метаданные раскрывают различные сведения о внутренней структуре файла Parquet, например статистику по отдельным столбцам. Это помогает определить, какие операции пропуска данных можно выполнять при чтении файлов Parquet, и даже быстро получить представление о содержимом отдельных столбцов.

Имя поляТип
file_nameSTRING
row_group_idBIGINT
row_group_num_rowsBIGINT
row_group_num_columnsBIGINT
row_group_bytesBIGINT
column_idBIGINT
file_offsetBIGINT
num_valuesBIGINT
path_in_schemaSTRING
typeSTRING
stats_minSTRING
stats_maxSTRING
stats_null_countBIGINT
stats_distinct_countBIGINT
stats_min_valueSTRING
stats_max_valueSTRING
compressionSTRING
encodingsSTRING
index_page_offsetBIGINT
dictionary_page_offsetBIGINT
data_page_offsetBIGINT
total_compressed_sizeBIGINT
total_uncompressed_sizeBIGINT
key_value_metadataMAP<VARBINARY, VARBINARY>
bloom_filter_offsetBIGINT
bloom_filter_lengthBIGINT
min_is_exactBOOLEAN
max_is_exactBOOLEAN
row_group_compressed_bytesBIGINT

parquet_schema​

Этот режим позволяет запрашивать внутреннюю схему файлов Parquet. Обратите внимание: речь идёт о структуре, содержащейся в метаданных файла Parquet.

Имя поляТип
file_nameVARCHAR
nameVARCHAR
typeVARCHAR
type_lengthBIGINT
repetition_typeVARCHAR
num_childrenBIGINT
converted_typeVARCHAR
scaleBIGINT
precisionBIGINT
field_idBIGINT
logical_typeVARCHAR

parquet_file_metadata​

Этот режим позволяет запрашивать метаданные уровня файла, например версию формата и используемый алгоритм шифрования.

Имя поляТип
file_nameSTRING
created_bySTRING
num_rowsBIGINT
num_row_groupsBIGINT
format_versionBIGINT
encryption_algorithmSTRING
footer_signing_key_metadataSTRING

parquet_kv_metadata​

Этот режим позволяет запрашивать пользовательские метаданные, заданные в виде пар «ключ — значение».

Имя поляТип
file_nameSTRING
keySTRING
valueSTRING

parquet_bloom_probe​

Doris поддерживает использование Bloom Filter в файлах Parquet для фильтрации данных и отсечения ненужных данных при чтении. Этот режим позволяет с помощью Bloom Filter проверить наличие указанного значения в указанном столбце.

Имя поляТип
file_nameSTRING
row_group_idINT
bloom_filter_excludesINT

Значения bloom_filter_excludes:

  • 1: Bloom Filter определяет, что эта Row Group точно не содержит указанного значения
  • 0: Bloom Filter определяет, что она может содержать указанное значение
  • -1: в файле нет Bloom Filter

Примеры​

  • Локальный файл (без схемы)

    SELECT * FROM parquet_meta(
    "uri" = "/path/to/test.parquet"
    );
  • Файл S3 (со схемой + параметрами хранилища)

    SELECT * FROM parquet_meta(
    "uri" = "s3://bucket/path/test.parquet",
    "mode" = "parquet_schema",
    "s3.access_key" = "...",
    "s3.secret_key" = "...",
    "s3.endpoint" = "s3.xxx.com",
    "s3.region" = "us-east-1"
    );
  • Использование подстановочных символов (glob)

    SELECT file_name FROM parquet_meta(
    "uri" = "s3://bucket/path/*meta.parquet",
    "mode" = "parquet_file_metadata"
    );
  • Использование режима parquet_bloom_probe

    select * from parquet_meta(
    "uri" = "${basePath}/bloommeta.parquet",
    "mode" = "parquet_bloom_probe",
    "column" = "col",
    "value" = 500,
    "s3.access_key" = "${ak}",
    "s3.secret_key" = "${sk}",
    "s3.endpoint" = "${endpoint}",
    "s3.region" = "${region}",
    );

Примечания и ограничения​

  • parquet_meta читает только метаданные Footer файлов Parquet, не обращаясь к страницам данных, поэтому подходит для быстрого просмотра метаданных.
  • Поддерживаются подстановочные символы (например, *, {}, []). Если подходящие файлы не найдены, возвращается ошибка.