You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyArrow获取Parquet文件的页级数据?

获取Parquet文件的页级详细信息

针对你想要查看Parquet文件页头、重复级别、定义级别及值这类细粒度信息的需求,以下是几种可行的方案:

一、使用PyArrow低级API解析页内容

PyArrow提供了直接读取和解析Parquet页的底层方法,你可以借助列块元数据中的偏移信息,手动定位并解析页数据:

from pyarrow import fs
from pyarrow.parquet import ParquetFile, read_dictionary_page, read_data_page

# 初始化ParquetFile对象(和你原代码一致)
s3 = fs.S3FileSystem(region='us-east-2')
path = 'voltrondata-labs-datasets/nyc-taxi/year=2009/month=1/part-0.parquet'
source = s3.open_input_file(path)
parquet_file = ParquetFile(source)

# 定位到目标列块(这里取第一个行组的第一列)
col_chunk = parquet_file.metadata.row_group(0).column(0)

# 读取并解析字典页
source.seek(col_chunk.dictionary_page_offset)
dict_page = read_dictionary_page(source, col_chunk)
print("=== 字典页信息 ===")
print(f"页类型: {dict_page.type}")
print(f"字典值数量: {dict_page.num_values}")
print(f"编码方式: {dict_page.encoding}")
print(f"字典内容示例: {dict_page.data.to_pylist()[:5]}")

# 读取并解析数据页
source.seek(col_chunk.data_page_offset)
data_page = read_data_page(source, col_chunk)
print("\n=== 数据页信息 ===")
print(f"页类型: {data_page.type}")
print(f"值数量: {data_page.num_values}")
print(f"编码方式: {data_page.encoding}")
# 提取重复级别、定义级别和值
repetition_levels = data_page.repetition_levels.to_pylist()
definition_levels = data_page.definition_levels.to_pylist()
values = data_page.data.to_pylist()
print(f"重复级别示例: {repetition_levels[:5]}")
print(f"定义级别示例: {definition_levels[:5]}")
print(f"值示例: {values[:5]}")

这段代码会直接输出字典页和数据页的详细信息,包括你需要的重复级别、定义级别和实际值。

二、使用parquet-cli工具查看页级元数据

旧的parquet-tools已被弃用,但官方替代工具parquet-cli支持输出页级的元数据详情:

  1. 先安装工具:
pip install parquet-cli
  1. 执行命令查看详细元数据:
parquet show --metadata --detail your_file.parquet

该命令会列出每个列块下的所有页的元数据,包括页偏移、压缩大小、编码类型等信息,适合快速查看页级结构。

三、手动解析Parquet文件格式(深入学习用)

如果想要彻底掌握Parquet底层原理,可以参考官方文件格式规范,手动实现二进制解析:

  • 先读取文件末尾的Footer,定位到行组和列块的偏移位置
  • 根据列块元数据中的偏移,找到字典页和数据页的起始位置
  • 按照Parquet的页格式规范(页头+压缩/编码后的内容)解析数据,处理RLE编码、字典编码、压缩解压等逻辑

这种方式需要处理大量二进制操作,但能让你完全理解Parquet的底层存储逻辑。


内容的提问来源于stack exchange,提问作者user2285236

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:16:07