#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. Похоже, это невозможно с вложенными типами, подобными этому.