我正在尝试使用pyspark访问以下json的内部属性
[
{
"432": [
{
"atttr1": null,
"atttr2": "7DG6",
"id":432,
"score": 100
}
]
},
{
"238": [
{
"atttr1": null,
"atttr2": "7SS8",
"id":432,
"score": 100
}
]
}
]
在输出中,我正在寻找csv atttr1、atttr2、id、score null、“7dg6”、432100 null、“7ss8”、238100等形式的内容
我知道我可以得到这些细节如下,但我不想通过432或238在lambda表达式,因为在更大的json这个(斜体)将有所不同。我想迭代所有可用的值。
print(inputDF.rdd.map(lambda x:(x['*432*'])).first())
print(inputDF.rdd.map(lambda x:(x['*238*'])).first())
我还尝试注册一个名为“test”的临时表,但它给出了一个消息元素错误。\u id不存在。
inputDF.registerTempTable("test")
srdd2 = spark.sql("select element._id from test limit 1")
任何帮助都将不胜感激。我用的是spark 2.4
1条答案
按热度按时间yacmzcpb1#
不使用Pypark功能,您可以这样做:
输出:
或
仅供参考,您可以将其存储在变量中,或将其写入csv而不是/并打印它。
如果您只是想将其转储到csv,请参阅以下答案。