如何从单个文件中读取不同的模式 json 对象并将其保存到表中

Posted

技术标签:

【中文标题】如何从单个文件中读取不同的模式 json 对象并将其保存到表中【英文标题】:How do I read different schema json objects from a single file and save it to a table 【发布时间】:2021-11-14 12:34:30 【问题描述】:

我是新来pyspak。能否请你帮我用pyspark从JSON文件创建一个表。它已设置2点差异的对象,需要结合为基于ID的单个行的。 P>

样本JSON文件数据:

[
  
    "id": "UP1981",
    "price1": "$49.99",
    "platforms": [
      "PS4"
    ]
  ,
  
    "id": "UP1981",
    "title": "HOT WHEELS",
  ,
  
    "id": "UP1982",
    "price1": "$50",
    "platforms": [
      "PS4"
    ]
  ,
  
    "id": "UP1982",
    "title": "HOT WHEELS2",
  
]

输出表:4列 - idprice1platformstitle

|   id      |  price1    |   Platforms  |   title          | 
|   UP1981   |  $49.99   |   PS4        |   HOT WHEELS     |
|   UP1982   |   $50     |   PS4        |   HOT WHEELS2    |

【问题讨论】:

【参考方案1】:

您可以使用 spark.read.json 读取 json 文件,然后按 id 对数据进行分组并在数据之上应用聚合。

Example:

from pyspark.sql.functions import *

df=spark.read.option("multiLine",True).json("<json_file_path>")

df.groupBy("id").agg(array_join(first("platforms"),"").alias("platforms"),first("price1").alias("price1"),max("title").alias("title")).show()
#+------+---------+------+-----------+
#|    id|platforms|price1|      title|
#+------+---------+------+-----------+
#|UP1981|      PS4|$49.99| HOT WHEELS|
#|UP1982|      PS4|   $50|HOT WHEELS2|
#+------+---------+------+-----------+

【讨论】:

以上是关于如何从单个文件中读取不同的模式 json 对象并将其保存到表中的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 中的文件/流中懒惰地读取多个 JSON 值?

如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?

我如何懒惰地从Rust中的文件/流中读取多个JSON值?

如何读取从 API 检索到的 JSON 并将其保存到 CSV 文件中?

Java - 如何读取json文件并将值放入数组中

将drawable中的图像作为文件读取