web-dev-qa-db-fra.com

La session n'est pas active Pyspark dans un cluster AWS EMR

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?

6
anat

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.

0
Manoj Raja Rao

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).

0
Fabio Manzano