Apache spark 为什么使用case类在数据帧上进行映射会失败,并导致“无法找到数据集中存储的类型的编码器”?
我已经导入了spark.implicits.\u但仍然出现错误 错误:27、33找不到数据集中存储的类型的编码器。导入spark.implicits可支持基本类型Int、String等和产品类型case类。将来的版本中将添加对序列化其他类型的支持 我有一个案例类,如:Apache spark 为什么使用case类在数据帧上进行映射会失败,并导致“无法找到数据集中存储的类型的编码器”?,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我已经导入了spark.implicits.\u但仍然出现错误 错误:27、33找不到数据集中存储的类型的编码器。导入spark.implicits可支持基本类型Int、String等和产品类型case类。将来的版本中将添加对序列化其他类型的支持 我有一个案例类,如: case class User(name: String, dept: String) 我正在使用以下方法将Dataframe转换为数据集: val ds = df.map { row=> User(row.getStri
case class User(name: String, dept: String)
我正在使用以下方法将Dataframe转换为数据集:
val ds = df.map { row=> User(row.getString(0), row.getString(1) }
或
另外,当我在Spark shell中尝试相同的代码时,我没有得到任何错误,只有当我通过IntelliJ运行它或提交作业时,我才得到这个错误
有什么原因吗?将case类的声明移出范围就成功了 代码结构将如下所示:
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)) }
}
将case类的声明移出范围就成功了 代码结构将如下所示:
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)) }
}