如何配置Hudi避免写入操作中将分区字段存入数据文件
Hudi分区字段不入数据文件实现方案
核心疑问解答
你如果提前删除数据中的y/m/d字段,Hudi确实无法识别分区信息:DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY配置的取值逻辑是从待写入的DataFrame字段中读取对应值来生成分区路径,字段删除后会直接导致分区路径生成失败。
正确实现方式
方案1(推荐,适配Hudi 0.9.0及以上版本)
直接开启Hudi自带的分区字段自动丢弃配置即可,无需手动修改数据结构:
- 在原有写入配置中新增配置项:
hoodie.datasource.write.drop.partition.columns=true - 原有分区路径配置、数据处理逻辑都不需要改动
- 运行逻辑:Hudi会先读取
y/m/d字段生成分区路径,写入数据文件前自动剔除这三个分区字段,不会写入最终存储
方案2(适配Hudi 0.9.0以下版本)
手动生成分区路径字段后再删除原有分区字段:
- 保留
y/m/d字段,拼接生成完整分区路径字符串,作为单独字段partition_path存入DataFrame,格式示例:concat_ws('/', lit('y='), y, lit('m='), m, lit('d='), d) - 修改
DataSourceWriteOptions.PARTITIONPATH_FIELD_OPT_KEY配置值为partition_path - 删除DataFrame中的
y/m/d字段后执行写入即可,Hudi直接读取partition_path作为分区路径,不会依赖已删除的三个分区字段
注意:非特殊低版本场景下优先使用方案1,实现成本更低,也不会引入额外的处理逻辑风险
内容的提问来源于stack exchange,提问作者Cherry
相关产品推荐
相关产品推荐

