使用Pyspark向hudi表写入数据时,选项内容如下:
hudi_options = { 'hoodie.datasource.write.keygenerator.class':'org.apache.hudi.keygen.ComplexKeyGenerator',
'hoodie.datasource.hive_sync.database': 'dingpan_test_mrs',
'hoodie.table.name': 'dwd_design_designasset_function_offline_wide', 'hoodie.datasource.write.table.name': 'dwd_design_designasset_function_offline_wide', 'hoodie.datasource.write.recordkey.field':'id', 'hoodie.datasource.write.precombine.field': 'modified_date', 'hoodie.datasource.write.table.type':'COPY_ON_WRITE', 'hoodie.datasource.write.operation': 'upsert',
'hoodie.upsert.shuffle.parallelism': 1,
'hoodie.insert.shuffle.parallelism': 1
}
new_data.write
.format("hudi")
.options(**hudi_options)
.mode("append")
.save(obs_path)
错误信息:
Could not load key generator class org.apache.hudi.keygen.ComplexKeyGenerator.
我该如何调整我的代码?请
您实际上不需要 ComplexKeyGenerator。仅当您的 recordKey 和/或分区由多列组成时才使用。
您只有一列用于记录键(在本例中为 id),并且没有指定分区,因此所有内容都将位于 Hudi 默认分区中。
所以在你的情况下你只需要 SimpleKeyGenerator。但实际上这是默认的密钥生成器,因此您可以完全省略该参数。
所以删除这个
'hoodie.datasource.write.keygenerator.class':'org.apache.hudi.keygen.ComplexKeyGenerator',
,它应该可以工作。
有关密钥生成器的一些文档:https://hudi.apache.org/docs/key_ Generation/#simple