【发布时间】:2018-08-13 20:15:00
【问题描述】:
我正在尝试在 Scala 2.2 中运行以下命令
val x_test0 = cn_train.map( { case row => row.toSeq.toArray } )
我不断收到以下错误
error: Unable to find encoder for type stored in a Dataset. Primitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Support for serializing other types will be added in future releases.
我已经通过以下命令导入了implicits._:
val spark = SparkSession.builder.getOrCreate()
import spark.implicits._
【问题讨论】:
-
到底是哪一行?当您尝试创建未定义编码器的数据集时会显示此错误。
-
Scala 2.2 有点老了。您可能指的是 Spark 2.2.x?
-
是的,对不起我的错误。它是 Spark 2.2.x。
-
错误显示如下:错误:无法找到存储在数据集中的类型的编码器。通过导入 spark.implicits 支持原始类型(Int、String 等)和产品类型(案例类)。未来版本中将添加对序列化其他类型的支持。 val x_test0 = cn_train.map( { case row => row.toSeq.toArray } )
-
错误信息告诉您不能将数组强制放入数据帧。试试
cn_train.rdd.map{ row => row.toSeq.toArray },这至少会给你一个数组的RDD。这样就够了吗?
标签: scala apache-spark encoder