Spark中数组的数据集(1.6.1)

时间:2016-06-27 15:52:50

标签: scala apache-spark apache-spark-sql apache-spark-dataset

因此,我一直在尝试重新格式化我正在使用数据集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 {

1 个答案:

答案 0 :(得分:0)

以下在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>]