问题描述
Spark Dataset.as函数对未找到的列引发异常-org.apache.spark.sql.AnalysisException: cannot resolve 'attr_3' given input columns: [attr_1,attr_2];
case class SomeCaseClass(attr_1: String,attr_2: Long,attr_3: String)
spark.read.parquet("some_directory").as[SomeCaseClass]
有什么办法可以避免这种异常,并为不存在的列设置null?
解决方法
在读取时指定 schema
,因为架构会为不存在的列添加空值,然后转换为 DataSet
。
Example:
case class SomeCaseClass(attr_1: String,attr_2: Long,attr_3: String)
val sch=Seq[SomeCaseClass]().toDF.schema
spark.read.schema(SomeCaseClass).parquet("some_directory").as[SomeCaseClass]