【问题标题】:Read concatenated json objects in Spark?在 Spark 中读取连接的 json 对象?
【发布时间】:2020-01-03 23:34:36
【问题描述】:

我正在阅读 Spark 中的一些 json 文件,这些文件被 S3 上的 firehose 转储。不幸的是,这些文件没有被任何分隔符分隔。它看起来像这样:

[{"name": "abc", "age": 18},{"name": "pqr", "age": 19}][{"name": "xyz", "age": 20}]

这是一个 json 对象列表的列表。两个列表之间没有分隔符,因此 spark 无法解析它。它只返回第一个列表的 json 对象。 使用此代码:

val df = spark.read.json(path)

返回

-------------------------------
name     |  age
------------------------------- 
abc      |  18
-------------------------------
pqr      |  19
-------------------------------

虽然,如果我手动更新文件以在单独的行上有列表,它工作正常。它可以读取所有 json 对象。但是,那是手动的。如何在 Spark 中实现同样的效果?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    JsonReader 无法做到这一点,但您可以将文件作为文本读取,在适当的位置拆分行,然后使用 org.apache.spark.sql.functions 中定义的 from_json 函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 2019-05-26
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2014-10-31
      相关资源
      最近更新 更多