当用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