如何在PyArrow中从Table或Dataset创建ParquetFile对象?
解决ParquetFile.from_table报错的问题
错误原因
pyarrow.parquet.ParquetFile是用来读取已存在的Parquet文件(磁盘文件或字节流)的类,它根本没有from_table这个类方法——Table是Arrow的内存数据结构,和Parquet文件格式是两回事,不能直接转换。
两种正确的解决方案
方案1:直接从原始Parquet文件获取元数据(推荐)
既然你本来就有Parquet文件的路径,完全不需要先转成Table,直接用文件路径创建ParquetFile就行:
import pyarrow.parquet as pq # 直接用原始文件路径和文件系统创建ParquetFile pq_file = pq.ParquetFile(PARQUET_FILE_PATH, filesystem=fs) file_meta = pq_file.metadata
方案2:从已有的Table生成Parquet元数据(仅当Table是处理后的版本时用)
如果你的Table是经过修改后的内存数据,必须从它生成Parquet元数据,需要先把Table序列化为Parquet格式(可以写入内存buffer避免磁盘IO),再用ParquetFile读取:
import pyarrow as pa import pyarrow.parquet as pq from io import BytesIO # 将Table写入内存中的Parquet字节流 buffer = BytesIO() pq.write_table(table, buffer) buffer.seek(0) # 重置指针到流开头 # 从内存流创建ParquetFile并获取元数据 pq_file = pq.ParquetFile(buffer) file_meta = pq_file.metadata
内容的提问来源于stack exchange,提问作者Aravind Yarram
相关产品推荐
相关产品推荐

