私は私を驚きだスパークジョブのエラーを取得しています:私の仕事は、このようなものですどのように減らす前に大きな中間結果を避けるために?
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)。 私はこれらの結果を合計して合計を返したいと思います。
スパークは、mapPartitions(func)の合計結果をインクリメンタルに処理するのではなく、約30MBしか必要としないメモリ(約5GB)で保持しているようです。
spark.driver.maxResultSizeを増やす代わりに、reduceを徐々に実行する方法はありますか?
アップデート:実際には、2つ以上の結果がメモリに保持されていることにもっと驚いています。