2

スタンドアロンクラスタモードでスパークジョブを実行しているときにこれらのエラーに直面しています。最終dfを取得し、df.toPandas().to_csv()するためにいくつかのgroupbyPyspark:TaskMemoryManager:ページの割り当てに失敗しました:エラー分析で助けが必要

  • count
  • joinsを実行

    • マイスパークジョブが目指しています。

    入力データセットは524Mbです。私が取得エラー:

    WARN TaskMemoryManager: Failed to allocate a page (33554432 bytes), try again.

    を複数回後

    1. がNettyRpcEnvをWARN以上、再び新しいエラーを繰り返し:失敗を無視:java.util.concurrent.TimeoutExceptionは:10秒

      内の任意の応答を受信できません
    2. org.apache.spark.rpc.RpcTimeoutException:先物は[10秒]後にタイムアウトしました。このタイムアウトは、spark.executor.heartbeatIntervalによって制御されます。

    3. at org.apache.spark.rpc.RpcTimeout ORG $ Apacheの$スパーク$ RPC $ RpcTimeout $$ createRpcTimeoutException

    4. ExecutorLostFailure(エグゼキュータドライバが実行中のタスクのいずれかが原因で終了しました)理由:158295ミリ秒

    5. 例外は、要求の処理中に起きた後エグゼハートビートがタイムアウトしました( '127.0.0.1'、49128) トレースバック(直近の最後のコール):

      ファイル "/home/stp/spark-2.0.0-bin-hadoop2.7/python/pyspark/accumulators.py" 、行235、ハンドル内 num_updates = read_int(self.rfile) ファイル "/home/stp/spark-2.0.0-bin-hadoop2.7/python/pyspark/serializer最後の###でread_int 昇給の例外EOFError 例外EOFErrorでs.py」、行545、

    6. ******** ##

      py4j.protocol.Py4JNetworkError:中にエラーが発生しましたエラーが原因メモリエラー(TaskMemoryManager)にし、合計16ギガバイトからかもしれないが、私が想定し、Javaサーバ最初に考えた上で(127.0.0.1:38073)

    に接続するには、プロセスは最大6ギガバイトを消費しました。 9 + gbは無料です。また、ドライバのメモリを10Gに設定しました。そう、合格。

    しかし、最終的なデータフレームでcount()またはshow()を実行すると、成功しました。しかしtoCsvをしている間、それは上記のエラー/警告を投げています。

    問題の原因を実際に理解したり推測したりしないでください。

    上記のエラーを分析するのを手伝ってください。どんな助けやコメントも大歓迎です。ありがとう。

  • 答えて

    4

    この例では、小さなテーブルがたくさんありました(< 10 MB)。そのため、私たちはブロードキャストを無効にすることに加え、ガベージコレクションのためにG1GCを使用し始めたことに加えて、 $ SPARK_HOMEであなたにこれらのエントリを追加しますが火花defaults.confにファイル/ confに

    spark.driver.extraJavaOptions -XX:+UseG1GC 
    spark.executor.extraJavaOptions -XX:+UseG1GC 
    spark.sql.autoBroadcastJoinThreshold -1 
    

    または代替として、あなたはautoBroadcastのしきい値サイズを調整して、問題を解決していることを見ることができます。

    関連する問題