web-dev-qa-db-ja.com

AWS EMRクラスターでセッションがアクティブでないPyspark

AWS EMRクラスターを開き、pyspark3 jupyterノートブックで次のコードを実行します。

"..
textRdd = sparkDF.select(textColName).rdd.flatMap(lambda x: x)
textRdd.collect().show()
.."

私はこのエラーを受け取りました:

An error was encountered:
Invalid status code '400' from http://..../sessions/4/statements/7 with error payload: {"msg":"requirement failed: Session isn't active."}

行を実行します。

sparkDF.show()

動作します!

また、ファイルの小さなサブセットを作成し、すべてのコードが正常に実行されました。

何が問題ですか?

6
anat

から このスタックオーバーフローの質問の答えは私にとってうまくいきました

出力を判断すると、アプリケーションがFAILEDステータスで終了していない場合は、Livyタイムアウトエラーのように聞こえます。アプリケーションは、Livyセッションに定義されたタイムアウト(デフォルトでは1時間)より長くかかるため、= Sparkアプリが成功すると、アプリがLivyセッションのタイムアウトよりも時間がかかる場合、ノートブックはこのエラーを受け取ります。

その場合の対処方法は次のとおりです。

1. edit the /etc/livy/conf/livy.conf file (in the cluster's master node)
2. set the livy.server.session.timeout to a higher value, like 8h (or larger, depending on your app)
3. restart Livy to update the setting: Sudo restart livy-server in the cluster's master
4. test your code again

この設定を編集する別の方法- https://allinonescript.com/questions/54220381/how-to-set-livy-server-session-timeout-on-emr-cluster-boostrap

コメントするには評判が不十分です。

ハートビート間隔をはるかに長く(100秒)しようとしましたが、結果は同じです。 FWIW、エラーは9秒未満で表示されます。

0
Manoj Raja Rao

この類似のスタックオーバーフロースレッドからいくつかの洞察が得られる可能性があります。 タイムアウトエラー:400ステータスコードのエラー:「要求の失敗:セッションがアクティブではありません。」

解決策は、spark.executor.heartbeatInterval。デフォルトは10秒です。

変更方法については EMRの公式ドキュメント を参照してくださいSparkデフォルト:

Spark-defaults.confのデフォルトを変更するには、spark-defaults構成分類またはspark構成分類のMaximizeResourceAllocation設定を使用します。

0
Fabio Manzano