【发布时间】:2019-11-12 23:01:07
【问题描述】:
我目前正在处理 JSON 文件中的以下源数据:
{
"unique_key_1": {
"some_value_1": 1,
"some_value_2": 2
},
"unique_key_2": {
"some_value_1": 2,
"some_value_2": 3
}
"unique_key_3": {
"some_value_1": 2,
"some_value_2": 1
}
...
}
请注意,源数据实际上是一个大型字典,其中包含许多唯一键。它不是字典列表。我有很多像这样的大型 JSON 文件,我想使用 PySpark 将它们解析为以下 DataFrame 结构:
key | some_value_1 | some_value_2
-------------------------------------------
unique_key_1 | 1 | 2
unique_key_2 | 2 | 3
unique_key_3 | 2 | 1
如果我正在处理小文件,我可以简单地使用类似于以下的代码来解析它:
[{**{"key": k}, **v} for (k, v) in source_dict.items()]
然后,我将在此列表上创建一个 Spark DataFrame 并继续我需要执行的其余操作。
我的问题是我不太清楚如何将这样的大型 JSON 对象解析为 DataFrame。当我使用SPARK.read.json("source_dict.json") 时,我得到一个DataFrame,其中每一个唯一的key 值(可以预见地)作为一列读入。请注意,真实的数据文件可能有成千上万个这样的键。
我对 Spark 世界还很陌生,我似乎找不到完成这项任务的方法。这似乎是一个支点或类似的东西会有所帮助。有没有人有任何解决方案或可能的解决方案的指针?谢谢,不胜感激!
【问题讨论】:
-
使用 RDD 更改 JSON 结构,然后使用
.toDF()将它们转换为 DF -
感谢您的回复!有关如何更改 JSON 结构的任何提示?我会很感激的:D
标签: python json apache-spark pyspark