我正在生成DataSet<Person>
,如此:
DataSet<Person> personDs = sparkSession.read().json("people.json").as(Encoders.bean(Person.class));
其中Person
是
class Person {
private String name;
private String placeOfBirth;
//Getters and setters
...
}
如果我的输入数据只包含名称({"name" : "bob"}
),则会收到错误org.apache.spark.sql.AnalysisException: cannot resolve 'placeOfBirth' given input columns: [name]
。
有没有办法告诉Spark,placeOfBirth
(或任何其他字段)可以是null
?
答案 0 :(得分:1)
在Spark 2.3.0和Scala 2.11.12中,代码对我有用:
sparkSession.read.schema("name String, placeOfBirth String").json("people.json").as(Encoders.bean(classOf[Person])).show()
输出:
+----+------------+
|name|placeOfBirth|
+----+------------+
| bob| null|
+----+------------+