我最近从Spark 1.6升级到了Spark 2.X,希望尽可能地从DataFrames转移到Datasets。我尝试了以下代码:
case class MyClass(a : Any, ...)
val df = ...
df.map(x => MyClass(x.get(0), ...))
正如你所看到的,MyClass
有一个类型为 Any
的字段。因为我在编译时不知道通过 x.get(0)
检索的字段的类型。它可能是长整型、字符串、整型等。
然而,当我尝试执行类似上面所示的代码时,会出现异常:
java.lang.ClassNotFoundException: scala.Any
通过一些调试,我意识到异常的产生并不是因为我的数据类型是Any
,而是因为MyClass
的类型是Any
。那么我该如何使用数据集呢?