我在使用 python 的 hadoop 流作业中遇到内存问题。在程序中,我需要一个结构,如下所示:
dict{"metric_id":set(user_id1,user_id2...),...}
在reduce中(只有reducer),我会计算每个metric_id有多少用户。现在大约有100,000,000个用户,它消耗大约6G内存。
我试过 module shelve,但它很慢......也许我以错误的方式使用它看起来像:
tmp_set = set()
for id in value.split(","):
if id != "":
tmp_set.add(id)
if self.ids_dict.has_key(metric_id):
ori_set = self.ids_dict[metric_id]
self.ids_dict[metric_id] = ori_set.union(tmp_set)
else:
self.ids_dict[metric_id] = tmp_set