如何从Parquet文件识别Iceberg/Hudi/DeltaLake格式?适配PyArrow任务
识别Parquet衍生格式(Iceberg/Hudi/DeltaLake)的方法
背景需求
我正在用PyArrow编写Parquet文件清理任务,目标只处理原生Parquet文件,需要跳过Iceberg、Hudi、DeltaLake格式的.parquet文件。直接操作这些衍生格式的Parquet文件会导致元数据不同步,进而损坏对应的数据表,必须通过它们的专属API/接口进行更新操作。
已掌握的Hudi识别方式
我知道可以通过特定列(比如_hoodie_commit_time)或者Parquet文件的元数据来识别Hudi格式。执行以下代码:
import pyarrow.parquet as pq print( pq.read_schema( 'hudi.parquet' ).metadata.keys() )
会得到包含Hudi专属元数据的输出:
[b'parquet.avro.schema', b'writer.model.name', b'hoodie_bloom_filter_type_code', b'org.apache.hudi.bloomfilter', b'hoodie_min_record_key', b'hoodie_max_record_key']
其中b'hoodie_min_record_key'和b'hoodie_max_record_key'是识别Hudi的关键元数据标识。
核心疑问
目前没有统一的标准来识别这些Parquet衍生格式吗?是不是每种格式的元数据实现方式都各不相同?
内容的提问来源于stack exchange,提问作者Sam.E
相关产品推荐
相关产品推荐

