【发布时间】:2016-08-10 22:56:50
【问题描述】:
如何使用下面的合并功能与 pyspark 合并 JSON 数据行,如下所示?
注意:假设这只是一个细节示例,我有 1000 行数据要合并。什么是最高效的解决方案?无论好坏,我都必须使用 pyspark。
输入:
data = [
{'timestamp': '20080411204445', 'address': '100 Sunder Ct', 'name': 'Joe Schmoe'},
{'timestamp': '20040218165319', 'address': '100 Lee Ave', 'name': 'Joe Schmoe'},
{'timestamp': '20120309173318', 'address': '1818 Westminster', 'name': 'John Doe'},
... More ...
]
期望的输出:
combined_result = [
{'name': 'Joe Schmoe': {'addresses': [('20080411204445', '100 Sunder Ct'), ('20040218165319', '100 Lee Ave')]}},
{'name': 'John Doe': {'addresses': [('20120309173318', '1818 Westminster')]}},
... More ...
]
合并功能:
def reduce_on_name(a, b):
'''Combines two JSON data rows based on name'''
merged = {}
if a['name'] == b['name']:
addresses = (a['timestamp'], a['address']), (b['timestamp'], b['address'])
merged['name'] = a['name']
merged['addresses'] = addresses
return merged
【问题讨论】:
-
感谢您的回复;加入是唯一的机制吗?什么时候使用其他东西有意义?我对火花完全陌生。数据框甚至可能不是正确使用的术语...
-
也许不是。所以你想要像
*ByKey这样的操作,名字是一个键? -
这就是我的怀疑。我一直在研究 combineByKey 和 groupByKey,但不清楚它们如何与上面的代码匹配。
标签: python json apache-spark merge pyspark