因此,我一直在尝试重新格式化一个正在努力使用数据集API的项目,并且在编码错误时遇到了一些问题。根据我阅读的内容,我认为我应该能够将原始值的数组存储在数据集中。但是,以下类给我编码错误:
case class InvertedIndex(partition:Int, docs:Array[Int], indices:Array[Long], weights:Array[Double])
val inv = RDD[InvertedIndex]
val invertedIndexDataset = sqlContext.createDataset(inv)
invertedIndexDataset.groupBy(x => x.partition).mapGroups {
//...
}
有人可以帮助我了解这里的问题吗?数据集当前无法处理原始数组,还是我需要做一些额外的事情才能使它们起作用?
谢谢
编辑1:
这是我遇到的完整错误
Error:(223, 84) 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.
val similarities = invertedIndexDataset.groupByKey(x => x.partition).mapGroups {
SPARK 2.0中预期的以下作品。
import spark.implicits._
spark.createDataset( Array(1,2) :: Array(1) :: Array(2) :: Nil )
res0:org.apache.spark.sql.Dataset[Array[Int]] = [value: array<int>]