0

我有以下课程,

case class myClass (a: String, b: Boolean, c: Double, d: HashMap[String, E])
case class E (f: String, g: Int)

下面的代码从一个 json 文件加载到这个Dataset[myClass]

mySparkSession.read.schema(Encoders.product[myClass].schema).json("myData.json").as[myClass]

和一个带有如下行的 .json(-lines) 文件:

{"a": "text","b": "false","c": 123456.78,"d": ["text", [{"f": "text"},{"g": 1}]]}

运行代码时出现以下错误:

编译失败:org.codehaus.commons.compiler.CompileException:文件“generated.java”,第 331 行,第 75 列:未找到适用于实际参数的构造函数/方法“java.lang.String, boolean, double, scala.collection .immutable.Map"; 候选人是:“my.package.name.objname$myClass(java.lang.String, boolean, double, scala.collection.immutable.HashMap)”

我该如何解决?

4

1 回答 1

1

试试这个:

import scala.collection.immutable.Map
case class myClass (a: String, b: Boolean, c: Double, d: Map[String, E])

我发现使用对你使用df.as[myClass]哪种类型可能有点挑剔。Map没有import它默认为scala.collection.Map,那也会失败。

于 2018-06-22T18:17:30.873 回答