J'ai ouvert un cluster AWS EMR et dans le cahier pyspark3 jupyter, j'exécute ce code:
"..
textRdd = sparkDF.select(textColName).rdd.flatMap(lambda x: x)
textRdd.collect().show()
.."
J'ai eu cette erreur:
An error was encountered:
Invalid status code '400' from http://..../sessions/4/statements/7 with error payload: {"msg":"requirement failed: Session isn't active."}
Courir la ligne:
sparkDF.show()
travaux!
J'ai également créé un petit sous-ensemble du fichier et tout mon code fonctionne correctement.
Quel est le problème?
De La réponse à cette question de débordement de pile qui a fonctionné pour moi
À en juger par la sortie, si votre application ne se termine pas avec un état ÉCHEC, cela ressemble à une erreur de délai d'expiration Livy: votre application prend probablement plus de temps que le délai d'expiration défini pour une session Livy (qui par défaut est 1h), donc même malgré le = Spark réussit, votre bloc-notes recevra cette erreur si l'application prend plus de temps que le délai d'expiration de la session Livy.
Si tel est le cas, voici comment y remédier:
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
Autre moyen de modifier ce paramètre - https://allinonescript.com/questions/54220381/how-to-set-livy-server-session-timeout-on-emr-cluster-boostrap
Réputation insuffisante pour commenter.
J'ai essayé d'augmenter l'intervalle de rythme cardiaque à un niveau beaucoup plus élevé (100 secondes), toujours le même résultat. FWIW, l'erreur apparaît dans <9s.
Vous pouvez obtenir des informations de ce thread de débordement de pile similaire: Erreur de délai d'expiration: erreur avec 400 StatusCode: "l'exigence a échoué: la session n'est pas active."
La solution pourrait être d'augmenter spark.executor.heartbeatInterval
. La valeur par défaut est de 10 secondes.
Voir documentation officielle EMR sur la façon de changer Spark par défaut:
Vous modifiez les valeurs par défaut dans spark-defaults.conf à l'aide de la classification de configuration spark-defaults ou du paramètre maximiserResourceAllocation dans la classification de configuration spark).