如何从 json 行文件读取到具有不可变的数据集中.哈希图?



我有以下类,

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: 文件"生成.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(">

我该如何解决这个问题?

试试这个:

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,这也将失败。

最新更新