【发布时间】:2018-09-17 20:52:54
【问题描述】:
我创建了每个元素都是字典的 RDD。
rdd.take(2)
[{'actor': 'brad',
'good': 1,
'bad': 0,
'average': 0,}
{'actor': 'tom',
'good': 0,
'bad': 1,
'average': 1,}]
我正在尝试对数据执行算术运算,即 'actor': 'brad' 和 'actor': 'tom',我想减去具有相同键的其他值,然后找到最终总和
即:
(1-0)+(0-1)+(0-1)= -1
由于这是 RDD 形式,我尝试做的是:
d1=rdd.filter(lambda x: x['name']=='brad').first()
{'actor': 'brad',
'good': 1,
'bad': 0,
'average': 0,}
d2=rdd.filter(lambda x: x['name']=='tom').first()
{'actor': 'tom',
'good': 0,
'bad': 1,
'average': 1,}
这给了我带有值'brad'和'tom'的字典。如何进行算术运算?
我尝试这样做:
d3 = {key: d1] - d2.get(key, 0) for key in d1.keys()}
但这给了我错误。
有没有更好的方法来做到这一点,我在 RDD 本身中操作字典而不是将其分解为基本字典?
谢谢
【问题讨论】:
-
sum((d1[k] - d2[k]) for k in d1.keys() if k in ['good','bad','average'])
标签: python dictionary apache-spark pyspark rdd