spark 读取的parquet文件schema改变了如何处理

当用spark.read.parquet("filepath").as[MyClass]时候,如果被读取的文件schema变了,比如增加了两列,这个时候直接读取会报错,那么有一种变通的方法就是spark.read.parquet("filepath").map(e=> val field = 
if (e.isNullAt(e.fieldIndex("field"))) null else e.getAs[String]("
field")
MyClass

})这种形式,也就是通过判断字段存在不存在做处理,否则会直接报异常

org.apache.spark.sql.AnalysisException: No such struct field 

更简便的方法是加上option.通过schema合并即可

spark.read.option("mergeSchema", "true").parquet(xxx).as[MyClass]

ref:http://spark.apache.org/docs/latest/sql-programming-guide.html#schema-merging

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值