使用的是spark 2.4.5;hudi0.10.0;
//代码很检点,就读出数据进行过滤
spark.table("cloud_brain.t_audit").select("id","createuser")
debug一遍后,找到原因:这个hudi的hive表之前进行过 add field,但是spark.table的时候,会默认先从hive表的TBLPROPERTIES 中的spark.sql.sources.schema.part.0获取schema,而这个属性参数,只有spark往hive写数据的时候才会发生变更,而通过hive-sql对表进行增加字段并不会改变这个属性参数。
问题找到后,解决办法就很简单了,就是将spark.sql.sources.schema.part.0改为和hive表的schema一致即可。因为这个问题的表较多,需要写一段代码来批量监测和处理
test("check-schema") {
Seq("cloud_brain", "electronic_invoice", "kos", "road_park").foreach(dbName => {
getHuaweiTables(dbName).foreach(