我创建了RDD,其中每个元素都是字典。
rdd.take(2)
[{'actor': 'brad',
'good': 1,
'bad': 0,
'average': 0,}
{'actor': 'tom',
'good': 0,
'bad': 1,
'average': 1,}]
我有一份表格字典列表:
D2:
[{'good': 1.4,
'bad': 0.4,
'average': 0.6,}
{'good': 0.4,
'bad': 1.7,
'average': 1.2,}]
我想将d2的值分配给Rdd。
Rdd和d2都具有相同的长度。 RDD中的每个字典都有一个额外的键"演员"。订单是一样的。我希望d2的字典按数字顺序分配给rdd的字典。这是d2的第一个字典更新了rdd
中第一个字典的值我希望将其作为
[{'演员':' brad', 好的':1.4, '坏':0.4, '平均':0.6,} {'演员':' tom', '好':0.4, '坏':1.7, '平均':1.2,}]
我试过了:
for dic in d2:
for key in rdd.filter(lambda x: x).first().keys():
rdd.filter(lambda x: x).first()[key]=dic[key]
这不起作用。如何更新值。
答案 0 :(得分:2)
这对你有好处吗?
rdd = sc.parallelize([{'actor': 'brad',
'good': 1,
'bad': 0,
'average': 0},
{'actor': 'tom',
'good': 0,
'bad': 1,
'average': 1}])
d2 = [{'good': 1.4,
'bad': 0.4,
'average': 0.6},
{'good': 0.4,
'bad': 1.7,
'average': 1.2}]
def update_and_return_dict(_dict, update_dict):
_dict.update(update_dict)
return _dict
print rdd.zipWithIndex().map(lambda x: update_and_return_dict(x[0], d2[x[1]])).collect()
[{' bad':0.4,' good':1.4,'平均':0.6,'演员':' ; brad'},{' bad':1.7,' good':0.4,'平均':1.2,'演员': '汤姆'}]