Недавно я перешел со Spark 1.6 на Spark 2.X и хотел бы также перейти, где это возможно, с фреймов данных на наборы данных. Я пробовал такой код
case class MyClass(a : Any, ...)
val df = ...
df.map(x => MyClass(x.get(0), ...))
Как видите, MyClass
имеет поле типа Any
, так как во время компиляции я не знаю тип поля, которое я извлекаю с помощью x.get(0)
. Это может быть тип long, string, int и т.д.
Однако, когда я пытаюсь выполнить код, подобный тому, что вы видите выше, я получаю исключение:
java.lang.ClassNotFoundException: scala.Any
После некоторой отладки я понял, что исключение возникает не потому, что мои данные имеют тип Any
, а потому, что MyClass
имеет тип Any
. Итак, как я могу использовать наборы данных?