java - 当我尝试使用 java 从 Spark 中的 json 文件创建 View 时,为什么我得到的行包含空值

标签 java apache-spark

我正在读取 Json 文件并使用 java 在 Spark 中创建 View ,当我尝试显示它时,它显示了以空值开头和结尾的两行额外行

我尝试过使用不同的选项 line multi line true 但它不起作用

 class Something
 {
   public void DoSomething() {
    SparkSession session = SparkSession.builder().appName("jsonreader")
    .master("local[4]").getOrCreate();

    Dataset<Row> jsondataset = session.read()
                                     .json("G:\\data\\employee.json");
    jsondataset.select("id","name","age").show();
      }
}

+----+-------+----+
|  id|   name| age|
+----+-------+----+
|null|   null|null|
|1201| satish|  25|
|1202|krishna|  28|
|null|   null|null|
+----+-------+----+


{
   {"id" : "1201", "name" : "satish", "age" : "25"}
   {"id" : "1202", "name" : "krishna", "age" : "28"}
}

是我的 json 文件,我正在输出带有空值的行,如上面
谁能帮我解释为什么我会变成这样

最佳答案

额外的大括号导致了这种情况。您必须在读取 JSON 之前或读取之后(即通过 Spark)处理它。此外,NULL 被读取为字符串,而不是完全 NULL。下面是我的解决方法,由于“null”是字符串,过滤条件将唯一地标识这些错误行。 :

jsondataset = jsondataset.select("age","id","name").filter("age <> 'null'")
jsondataset.show()

// Result 
//   +---+----+-------+
//   |age|id  |name   |
//   +---+----+-------+
//   |25 |1201|satish |
//   |28 |1202|krishna|
//   +---+----+-------+

关于java - 当我尝试使用 java 从 Spark 中的 json 文件创建 View 时,为什么我得到的行包含空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461360/

相关文章:

java - 过滤后,过滤器显示不正确的列表

java - 文本文件编码为UTF_8?

java - RxJava : How to retain Thread from upstream

python - 如何在 PySpark 中创建 merge_asof 功能?

hadoop - 如何将spark/hadoop任务的输入设置为一系列文件

java - 如何使用 iTextPDF 创建段落?

java - 需要 OOP 和继承建议

scala - Spark sql 在进行数据类型转换时将坏记录转换为 Null

amazon-web-services - 在 Windows 8.1 上启动集群时无法识别 Spark-EC2

apache-spark - 如何在 Spark 中使用 ASCII 函数