python - 更新 RDD pyspark 中的字典值

标签 python dictionary apache-spark pyspark rdd

我创建了 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 中第一个字典的值

我想得到它

[{' Actor ': '布拉德', “好”:1.4, “坏”:0.4, “平均”:0.6,} {' Actor ': '汤姆', “好”: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]

这不起作用。如何更新这些值。

最佳答案

这对你有好处吗?

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()

[{'坏': 0.4, '好': 1.4, '平均': 0.6, ' Actor ': '布拉德'}, {'坏': 1.7, '好': 0.4, '平均': 1.2 , ' Actor ': '汤姆'}]

关于python - 更新 RDD pyspark 中的字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838110/

相关文章:

scala - 使用Spark CSV软件包读取非常大的文件时出错

python - 解析过程中随时列出所有可用标记的解析技术

python - Keras - 将值绘制到张量板上

python - 如何将 'states' 对象类列表转换为 pandas 数据框?

python - Python(或 C)中的内存高效字符串到字符串映射

python - GCP Dataproc - 西里尔字符在 python 中显示不正确

python - 带有 python 插件的 Intellij 2017.1 不显示正确的快速文档

python - 将嵌套的json转换成没有嵌套对象的字典格式

c# - C#中字典的文字符号?

amazon-web-services - 在spark MapTask中调用http请求和读取输入流的有效方法是什么