如何在Python中获取Hive分区Parquet文件的列与Schema?
读取Hive分区Parquet文件Schema的解决方案
常规通过pq.read_schema()读取Parquet Schema的方式对Hive分区文件无效,且partitioning='hive'参数目前尚未实现,可通过以下两种方式获取包含分区列的完整Schema:
方法一:基于数据集读取空数据获取Schema
利用ParquetDataset识别Hive分区,读取0行数据来提取完整Schema,无需加载实际数据:
import pyarrow.parquet as pq # 指定Hive分区目录初始化数据集 dataset = pq.ParquetDataset("你的分区目录路径", partitioning='hive') # 读取0行数据,仅获取Schema信息 empty_table = dataset.read(n_rows=0) full_schema = empty_table.schema print(full_schema)
方法二:手动合并基础Schema与分区列
若已知分区列的名称和类型,可先读取单个Parquet文件的基础Schema,再手动添加分区列:
import pyarrow.parquet as pq from pyarrow import schema, field # 读取单个Parquet文件的基础Schema base_schema = pq.read_schema("单个Parquet文件路径", memory_map=True) # 定义分区列(示例为year和month,根据实际情况修改) partition_fields = [ field("year", type="int32"), field("month", type="int32") ] # 合并得到完整Schema full_schema = schema(base_schema.fields + partition_fields) print(full_schema)
内容的提问来源于stack exchange,提问作者lmocsi
相关产品推荐
相关产品推荐

