2016-03-29 23 views
3

私はスパークジョブを実行しています。 enter image description hereすべてのジョブが完了して表示された後にスパークジョブが再開しました。(TimeoutException:先行ジョブが[300秒後にタイムアウトしました]

ただし、数分後にジョブ全体が再開されますが、今回はすべてのジョブとタスクが完了したことが表示されますが、数分後に失敗します。私は結果にshow(100)を実行すると、図3(b)行の1つ、第二は200M行です:これは私が2つのかなり大きなテーブルを結合しようとしているときに発生

java.util.concurrent.TimeoutException: Futures timed out after [300 seconds] 

: 私は、ログにこの例外を見つけましたデータフレーム、すべてが評価され、私はこの問題を抱えています。

パーティションの数を増減することで試してみましたが、ガベージコレクタをスレッド数を増やしてG1に変更しました。 spark.sql.broadcastTimeoutを600に変更しました(タイムアウトメッセージを600秒に変更しました)。

これは通信上の問題かもしれませんが、このコードセグメントの前で動作する他のshow()句は問題なく動作するため、おそらくそれはそうではありません。

/opt/spark/spark-1.4.1-bin-hadoop2.3/bin/spark-submit --master yarn-cluster --class className --executor-memory 12g --executor-cores 2 --driver-memory 32g --driver-cores 8 --num-executors 40 --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:ConcGCThreads=20" /home/asdf/fileName-assembly-1.0.jar 

あなたが火花のバージョンについてのアイデアを得ることができ、そこから使用するリソース:

これはsubmitコマンドです。

どこから行くのですか?どんな助けも高く評価され、コードセグメント/追加のログが必要に応じて提供されます。

+0

こんにちは@ilcord、あなたは問題を解決することができましたか? – dbustosp

+0

はい。私の答えを参照してください – ilcord

答えて

3

最終的にこれを解決したのは、参加前に両方のデータフレームを保持していたことでした。

データフレームを永続化する前後の実行計画を見ましたが、奇妙なことはsparkがデータフレームのサイズが大きいために明らかに失敗したBroadcastHashJoinを実行しようとする前のことでした。計画は、参加がShuffleHashJoinであることを示しました。何も問題なく完了しました。バグ?多分、私はそれに着くときに新しいスパークバージョンで試してみるでしょう。

+1

更新:それはスパーク1.5 + – ilcord

+0

と正常に実行されているように見える場合は、その大きなサイズは、サイズでしたか? 'spark.sql.autoBroadcastJoinThreshold'を増やすことができます(多分<2gig)効果を見ることができます。つまり、ブロードキャストされたデータ(小さなデータフレーム)は、適切な値以上の値に収まることを意味します。それでも、ブロードキャストに参加します。また、[私の答え](https://stackoverflow.com/a/39404486/647053)より良い –

関連する問題