Эволюция схемы с вложенными типами и классами обращений в Spark

#apache-spark #apache-spark-sql

#apache-spark #apache-spark-sql

Вопрос:

Мы храним наши данные в parquet. Мы считываем это во фрейм данных и преобразуем в классы обращений. Вот макет примера:

 sqlContext.read.parquet(path)
      .as[House]
  

House — сложный тип с вложенными классами обращений:

 case class House(rooms: Seq[Room])
case class Room(area: Int) 
  

Наша проблема в том, что мы хотим изменить поле в Room:

 case class Room(width: Int, length: Int)
  

У нас есть логика для преобразования области в ширину и длину.

Каков рекомендуемый способ чтения как старой, так и новой схемы с одним и тем же кодом?

Мы думаем использовать схему слияния parquet во время чтения, проверяем результирующий фрейм данных для переноса свойств, затем преобразуем в наши классы case. Похоже, это невозможно с вложенными типами, подобными этому.