1
我在火花的工作得到一个错误,是令人惊讶的我:如何在减少前避免较大的中间结果?
Total size of serialized results of 102 tasks (1029.6 MB) is
bigger than spark.driver.maxResultSize (1024.0 MB)
我的工作是这样的:
def add(a,b): return a+b
sums = rdd.mapPartitions(func).reduce(add)
RDD有〜500个分区和FUNC发生在该分区中的行和返回一个大数组(一个1.3M双数或〜10Mb的numpy数组)。 我想总结所有这些结果并返回它们的总和。
Spark似乎将mapPartitions(func)的总结果保存在内存中(大约5GB),而不是逐步处理它,这只需要大约30Mb。
而不是增加spark.driver.maxResultSize,有没有办法减少更多的增量?
更新:其实我有点惊讶,更多的是,这两个结果永远保存在内存中。