如何从单个文件中读取不同的模式 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列 - id
,price1
,platforms
,title
:
| 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 对象返回?