跳到主要内容

PARQUET_META

parquet_meta 表函数(table-valued-function,tvf)可以用于读取 Parquet 文件的 Footer 元数据,不会扫描数据页。它可以快速查看 Row Group 统计、Schema、文件级元数据、KV 元数据以及 Bloom Filter 探测结果。

该功能为实验功能,自 4.0.3 版本支持。

语法

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 支持使用 Parquet 文件中的布隆过滤器进行数据过滤和裁剪。该模式用于检测指定列和列值是否可以通过布隆过滤器检测。

字段名类型
file_nameSTRING
row_group_idINT
bloom_filter_excludesINT

bloom_filter_excludes 的含义:

  • 1:Bloom Filter 判断该 Row Group 一定不包含该值
  • 0:Bloom Filter 判断可能包含该值
  • -1:文件没有 Bloom Filter

示例

  • 本地文件(不带 scheme)

    SELECT * FROM parquet_meta(
    "uri" = "/path/to/test.parquet"
    );
  • S3 文件(带 scheme + 存储参数)

    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 只读取 Parquet Footer 元数据,不读取数据页,适合快速查看元信息。
  • 支持通配符(如 *{}[]),若无匹配文件则会报错。