我的计算造成了大量的臃肿;我的计算进展如下:
.flatMap
关于这些价值观。现在至少有1000个次条目groupByKey
获得比起初更少的条目在步骤3和/或4的某个地方,我遇到了内存错误。我创造了大量的集群;方式太大了,仍然会出现内存错误。
如何将我的数据拆分成更小的块,以便我的工作节点不会因膨胀而过载?
修改的 这是我的代码:
rdd_processed = (
rdd_source_data
.map(lambda x: (x, creates_big_list(x))) # value is ~1000 entries large
.flatMap(lambda t: t)
.groupByKey()
.mapValues(list)
)
编辑2 :
对原始rdd和更新的分组功能进行了分区(感谢提示):
rdd_processed = (
rdd_source_data
.partitionBy(10000)
.map(lambda x: (x, creates_big_list(x))) # value is ~1000 entries large
.flatMap(lambda t: (t[0], [t[1]]))
.reduceByKey(lambda x, y: x+y)
)
似乎有所帮助,但还不够。
我玩过partitionBy
的大小,虽然我似乎无法让它不会溢出我的记忆。我用它了吗?