【发布时间】:2012-12-19 09:54:13
【问题描述】:
我在使用 python 的 hadoop 流作业中遇到内存问题。 在程序中,我需要一个看起来像这样的结构:
dict{"metric_id":set(user_id1,user_id2...),...}
在reduce中(只有reducer),我会计算每个metric_id有多少用户。现在大约有100,000,000个用户,大约消耗6G内存。
我已经尝试过模块 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
【问题讨论】:
-
修复您的应用程序...不太可能您想要流式传输 100.000.000 个用户数据....无论出于何种原因...被设计破坏
标签: python memory dictionary