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()
動作します!
また、ファイルの小さなサブセットを作成し、すべてのコードが正常に実行されました。
何が問題ですか?
から このスタックオーバーフローの質問の答えは私にとってうまくいきました
出力を判断すると、アプリケーションが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秒未満で表示されます。
この類似のスタックオーバーフロースレッドからいくつかの洞察が得られる可能性があります。 タイムアウトエラー:400ステータスコードのエラー:「要求の失敗:セッションがアクティブではありません。」
解決策は、spark.executor.heartbeatInterval
。デフォルトは10秒です。
変更方法については EMRの公式ドキュメント を参照してくださいSparkデフォルト:
Spark-defaults.confのデフォルトを変更するには、spark-defaults構成分類またはspark構成分類のMaximizeResourceAllocation設定を使用します。