如何解析结构化流中的JSON记录?

dexter007

我正在开发一个Spark结构化流应用程序,并且试图解析以下格式的JSON。

{"name":"xyz","age":29,"details":["city":"mumbai","country":"India"]}
{"name":"abc","age":25,"details":["city":"mumbai","country":"India"]}

以下是我的Spark代码以解析JSON:

import org.apache.spark.sql.types._
import spark.implicits._
 val schema= new StructType()
    .add("name",DataTypes.StringType )
    .add("age", DataTypes.IntegerType)
    .add("details",
      new StructType()
        .add("city", DataTypes.StringType)
        .add("country", DataTypes.StringType)
    )

  val dfLogLines = dfRawData.selectExpr("CAST(value AS STRING)") //Converting binary to text

  val personNestedDf = dfLogLines.select(from_json($"value", schema).as("person"))
  val personFlattenedDf = personNestedDf.selectExpr("person.name", "person.age")

  personFlattenedDf.printSchema()
  personFlattenedDf.writeStream.format("console").option("checkpointLocation",checkpoint_loc3).start().awaitTermination()

输出:

root
|-- name: string (nullable = true)
|-- age: integer (nullable = true)

-------------------------------------------
Batch: 0
-------------------------------------------
+----+----+
|name| age|
+----+----+
|null|null|
|null|null|
+----+----+

该代码不会引发任何错误,但会在输出中返回空值。我在这里做错了什么?提前致谢。

杰西克·拉斯考斯基(Jacek Laskowski)

tl; dr JSON在details字段中看起来格式不正确


from_json标准函数的文档中

如果是不可解析的字符串,则返回null。

问题出在details领域上。

{“详细信息”:[“城市”:“孟买”,“国家”:“印度”]}

它看起来像数组或映射,但没有匹配项。

scala> Seq(Array("one", "two")).toDF("value").toJSON.show(truncate = false)
+-----------------------+
|value                  |
+-----------------------+
|{"value":["one","two"]}|
+-----------------------+

scala> Seq(Map("one" -> "two")).toDF("value").toJSON.show(truncate = false)
+-----------------------+
|value                  |
+-----------------------+
|{"value":{"one":"two"}}|
+-----------------------+

scala> Seq(("mumbai", "India")).toDF("city", "country").select(struct("city", "country") as "details").toJSON.show(truncate = false)
+-----------------------------------------------+
|value                                          |
+-----------------------------------------------+
|{"details":{"city":"mumbai","country":"India"}}|
+-----------------------------------------------+

我的建议是使用用户定义的函数(UDF)自己进行JSON解析。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解析结构化流中的JSON记录?

来自分类Dev

结构化流如何动态解析kafka的json数据

来自分类Dev

如何在(Py)Spark结构化流中捕获不正确的(损坏的)JSON记录?

来自分类Dev

如何解析textarea中的结构化字符串数据(带有JSON)以检索其必需的属性?

来自分类Dev

Java:如何解析结构化TXT文件?

来自分类Dev

Java:如何解析结构化TXT文件?

来自分类Dev

Pandas 中嵌套结构化 json 的解析

来自分类Dev

如何将静态数据帧与Spark结构化流中的流数据进行比较?

来自分类Dev

如何使用(Py)Spark结构化流为带有时间戳(来自Kafka)的JSON记录定义架构?-显示空值

来自分类Dev

从Spark结构化流以JSON数组形式写入数据

来自分类Dev

将 JSON 保存到 HDFS 的结构化流

来自分类Dev

Spark结构化流时,DataFrame中的字符串列如何拆分为多个列

来自分类Dev

如何检查结构化流中的StreamingQuery性能指标?

来自分类Dev

如何计算 ApacheSpark 结构化流中数据帧 API 的 z 分数?

来自分类Dev

如何在 Azure DataLake 中合并基本和多个增量结构化流

来自分类Dev

如何删除Spark结构化流创建的旧数据?

来自分类Dev

如何并行运行多个结构化流?

来自分类Dev

Jupyter Notebook中未显示结构化流输出

来自分类Dev

Spark结构化流从查询异常中恢复

来自分类Dev

从 Kafka 读取时 Pyspark 结构化流中的异常

来自分类Dev

结构化流写入多个流

来自分类Dev

如何解析结构化PDF以收集所有文本和框的元数据作为数据字典

来自分类Dev

Java中的结构化HTML日志记录

来自分类Dev

如何解析JSON数组以更新PostgreSQL中的记录

来自分类Dev

解析半结构化json数据(Python / R)

来自分类Dev

在Perl中解析结构化文本文件

来自分类Dev

在python中解析结构化文本文件

来自分类Dev

在Shell脚本/ Linux中解析非结构化数据

来自分类Dev

解析外壳中的非结构化数据

Related 相关文章

  1. 1

    如何解析结构化流中的JSON记录?

  2. 2

    结构化流如何动态解析kafka的json数据

  3. 3

    如何在(Py)Spark结构化流中捕获不正确的(损坏的)JSON记录?

  4. 4

    如何解析textarea中的结构化字符串数据(带有JSON)以检索其必需的属性?

  5. 5

    Java:如何解析结构化TXT文件?

  6. 6

    Java:如何解析结构化TXT文件?

  7. 7

    Pandas 中嵌套结构化 json 的解析

  8. 8

    如何将静态数据帧与Spark结构化流中的流数据进行比较?

  9. 9

    如何使用(Py)Spark结构化流为带有时间戳(来自Kafka)的JSON记录定义架构?-显示空值

  10. 10

    从Spark结构化流以JSON数组形式写入数据

  11. 11

    将 JSON 保存到 HDFS 的结构化流

  12. 12

    Spark结构化流时,DataFrame中的字符串列如何拆分为多个列

  13. 13

    如何检查结构化流中的StreamingQuery性能指标?

  14. 14

    如何计算 ApacheSpark 结构化流中数据帧 API 的 z 分数?

  15. 15

    如何在 Azure DataLake 中合并基本和多个增量结构化流

  16. 16

    如何删除Spark结构化流创建的旧数据?

  17. 17

    如何并行运行多个结构化流?

  18. 18

    Jupyter Notebook中未显示结构化流输出

  19. 19

    Spark结构化流从查询异常中恢复

  20. 20

    从 Kafka 读取时 Pyspark 结构化流中的异常

  21. 21

    结构化流写入多个流

  22. 22

    如何解析结构化PDF以收集所有文本和框的元数据作为数据字典

  23. 23

    Java中的结构化HTML日志记录

  24. 24

    如何解析JSON数组以更新PostgreSQL中的记录

  25. 25

    解析半结构化json数据(Python / R)

  26. 26

    在Perl中解析结构化文本文件

  27. 27

    在python中解析结构化文本文件

  28. 28

    在Shell脚本/ Linux中解析非结构化数据

  29. 29

    解析外壳中的非结构化数据

热门标签

归档