3

私はこの単純なコードを実行しています:

val accum = sc.accumulator(0, "Progress");
listFilesPar.foreach {
  filepath =>
    accum += 1
}

listFilesPar はRDD[String]

次のエラーがスローされます。

org.apache.spark.SparkException: Task not serializable

現在、何が起こっているのか理解できません。長い関数を記述する必要があるため、括弧ではなく括弧を付けます。単体テストを行っているだけです

4

1 に答える 1

6

これの典型的な原因は、クロージャーが予期せず何かをキャプチャすることです。シリアル化されるとは予想していなかったので、ペーストに含めなかったもの。

コードが見つかるまで、コードの削減を試みることができます。または、シリアライゼーション デバッグ ロギングをオンにし-Dsun.io.serialization.extendedDebugInfo=trueます。出力を見ると、Spark がばかげたことをシリアル化しようとしていることがわかるでしょう。

于 2015-01-19T19:47:02.073 に答える