java - 显式指定用于读取 JSON 的架构并将缺失的字段标记为 null

标签 java json apache-spark

我正在生成一个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

最佳答案

在 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|
+----+------------+

关于java - 显式指定用于读取 JSON 的架构并将缺失的字段标记为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50254423/

相关文章:

java - Application Insights 添加 http 过滤器

java - 使用 Codename one 如何向电子邮件添加多个附件

java - 使用 RestTemplate 时如何映射 ResponseEntity 中的响应对象?

mysql 5.7 json 数据类型搜索哈希数组

JavaScript : I cannot access JSON objects inside an array using array index

scala - 从 Spark 中的单词中删除特殊字符 - scala

apache-spark - 如何在 EC2 Spark 集群上训练深度神经网络(tensorflow)?

java - hibernate "APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!"

android - 无法从 IP 服务器检索 JSONArray 但我可以从普通服务器检索?

scala - 字段中的空值会生成 MatchError