【发布时间】:2016-02-06 15:45:13
【问题描述】:
我有一个要处理的对象数组:Objects,我有一个函数,它接收字典和一个对象,并返回同一个字典,修改后:
new_dict = modify_object_dict(object_dict, object)
modify_object_dict 执行以下操作:
向字典中添加一个键,即处理对象的名称
创建一个字典作为该键的值(字典中的字典),其中包含添加和删除的元素。
例如,对象可能是一个文件:
object_dict['file_name']=sub_dictionary,子字典可能包含sub_dictionary['file_attribute']=attribute。
modify_object_dict 填充这些子字典,如上所示,结果是一个包含子字典的字典。
请注意,子词典不相互交互。即一个对象的字典不与另一个对象的字典交互。
我希望使用 spark 并行处理这些对象:
object_dict = {} # dictionary is initially empty
RDD = (sc.parallelize(Objects)
.map(lambda object: modify_object_dict(object_dict, object))
这是正确的方法吗?如果不是,那么返回每次调用映射函数时修改的字典的正确方法是什么?
【问题讨论】:
-
不幸的是,您无法修改驱动程序中存在的变量,因为任务是在执行程序中操作的。
modify_object_dict()是做什么的?也许,您可以在任务中应用您的处理,然后利用collectAsMap()?
标签: python dictionary apache-spark lambda rdd