gpt4 book ai didi

apache-spark - 在 PySpark 中处理嵌套的 JSON

转载 作者:行者123 更新时间:2023-12-05 05:35:35 29 4
gpt4 key购买 nike

我正在将一个 JSON 文件加载到 PySpark 中:

df = spark.read.json("20220824211022.json")
df.show()
+--------------------+--------------------+--------------------+
| data| includes| meta|
+--------------------+--------------------+--------------------+
|[{961778216070344...|{[{2018-02-09T01:...|{1562543391161741...|
+--------------------+--------------------+--------------------+

我感兴趣的两列是dataincludes。对于 data,我运行了以下命令:

df2 = df.withColumn("data", F.explode(F.col("data"))).select("data.*")
df2.show(2)
+-------------------+--------------------+-------------------+--------------+--------------------+
| author_id| created_at| id|public_metrics| text|
+-------------------+--------------------+-------------------+--------------+--------------------+
| 961778216070344705|2022-08-24T20:52:...|1562543391161741312| {0, 0, 0, 2}|With Kaskada, you...|
|1275784834321768451|2022-08-24T20:47:...|1562542031284555777| {2, 0, 0, 0}|Below is a protot...|
+-------------------+--------------------+-------------------+--------------+--------------------+

这是我可以使用的东西。但是,我不能对 includes 列执行相同的操作,因为它有包含 []{}

我有办法使用 PySpark 来处理这个问题吗?

编辑:

如果您查看 JSON 文件中的 includes 部分,它看起来像:

"includes": {"users": [{"id": "893899303" .... }, ...]},

理想情况下,在我的问题的第一个表中,我希望 includes 成为 users,或者至少能够深入到 users

最佳答案

由于您的 includes 列是一个 MapTypekey value = "users",您可以使用 .getItem() 通过key获取数组,即:

df3 = df.withColumn("includes", F.explode(F.col("includes").getItem("users"))).select("includes.*")

关于apache-spark - 在 PySpark 中处理嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73480187/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com