Spark — игнорировать несуществующие столбцы для Dataset.as [SomeCaseClass]

#apache-spark

#apache-spark

Вопрос:

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 для несуществующих столбцов?

Комментарии:

1. есть ли у вас attr_3 доступные в «some_directory»? можете ли вы опубликовать spark.read.parquet("some_directory").printSchema() ?

Ответ №1:

При чтении укажите, 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]