我已导入spark.implicits._
但我仍然收到错误
错误:(27,33)无法找到存储在数据集中的类型的编码器。导入spark.implicits.支持原始类型(Int,String等)和产品类型(case类)。将来版本中将添加对序列化其他类型的支持。
我有一个案例类:
case class User(name: String, dept: String)
我正在使用以下方法将Dataframe转换为数据集:
val ds = df.map { row=> User(row.getString(0), row.getString(1) }
或
val ds = df.as[User]
此外,当我在Spark-shell
中尝试相同的代码时,我没有得到任何错误,只有当我通过IntelliJ运行它或提交作业时我才会收到此错误。
有什么原因吗?
答案 0 :(得分:4)
将案例类的移动声明移出范围就行了!
代码结构将如下:
package main.scala.UserAnalytics
// case class *outside* the main object
case class User(name: string, dept: String)
object UserAnalytics extends App {
...
ds = df.map { row => User(row.getString(0), row.getString(1)) }
}