如何从 json 行文件读取到具有 immutable.HashMap 的数据集?
How do I read from a json-lines file into a Dataset with an immutable.HashMap?
我有以下 类,
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}]]}
我在 运行 代码时收到以下错误:
failed to compile: org.codehaus.commons.compiler.CompileException:
File 'generated.java', Line 331, Column 75: No applicable
constructor/method found for actual parameters "java.lang.String,
boolean, double, scala.collection.immutable.Map"; candidates are:
"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
,这也会失败。
我有以下 类,
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}]]}
我在 运行 代码时收到以下错误:
failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 331, Column 75: No applicable constructor/method found for actual parameters "java.lang.String, boolean, double, scala.collection.immutable.Map"; candidates are: "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
,这也会失败。