Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark数据集中的SortedMap不可序列化错误_Scala_Apache Spark_Apache Spark Dataset - Fatal编程技术网

Scala Spark数据集中的SortedMap不可序列化错误

Scala Spark数据集中的SortedMap不可序列化错误,scala,apache-spark,apache-spark-dataset,Scala,Apache Spark,Apache Spark Dataset,scala.collection.SortedMap似乎不可序列化 简单代码示例: case class MyClass(s: scala.collection.SortedMap[String, String] = SortedMap[String, String]()) object MyClass { def apply(i: Int): MyClass = MyClass() } import sparkSession.implicits._ List(MyClass(1),

scala.collection.SortedMap似乎不可序列化

简单代码示例:

case class MyClass(s: scala.collection.SortedMap[String, String] = SortedMap[String, String]())

object MyClass {
  def apply(i: Int): MyClass = MyClass()
}

import sparkSession.implicits._

List(MyClass(1), MyClass()).toDS().show(2)
将返回:

+-----+
|    s|
+-----+
|Map()|
|Map()|
+-----+
另一方面,take()将在执行时惨遭失败:

List(MyClass(1), MyClass()).toDS().take(2)

错误codegen.CodeGenerator:未能编译:org.codehaus.commons.compiler.compileeException:文件'generated.java',第116行,第100列:未找到实际参数“scala.collection.Map”的适用构造函数/方法;候选项为:“com.caspida.algorithms.security.offline.exfilterationthreat.MyClass(scala.collection.SortedMap)”

Spark支持的scala类型(从2.1.0开始)不包括scala.collection.SortedMap)。可在此处找到受支持类型的列表:

正如链接所建议的,支持的映射类型是
scala.collection.Map
,因此以下功能可以正常工作:

case class MyClass(s: scala.collection.Map[String, String] = SortedMap[String, String]())


scala> spark.createDataset( MyClass() :: Nil ).collect()
res: Array[MyClass2] = Array(MyClass(Map()))

Spark支持的Scala类型(从2.1.0开始)不包括Scala.collection.SortedMap)。可在此处找到受支持类型的列表:

正如链接所建议的,支持的映射类型是
scala.collection.Map
,因此以下功能可以正常工作:

case class MyClass(s: scala.collection.Map[String, String] = SortedMap[String, String]())


scala> spark.createDataset( MyClass() :: Nil ).collect()
res: Array[MyClass2] = Array(MyClass(Map()))