J'essaie de tracer un jeu de données spark en utilisant matplotlib après l'avoir converti en dataframe pandas dans AWS EMR jupyterhub.
Je suis capable de tracer dans une seule cellule en utilisant matplotlib comme ci-dessous :
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
df = [1, 1.6, 3, 4.2, 5, 4, 2.5, 3, 1.5]
plt.plot(df)
Maintenant, le code ci-dessus fonctionne très bien pour moi.
Après cet exemple, je suis allé de l'avant pour tracer mon dataframe pandas à partir d'une cellule nouvelle/multiple dans AWS-EMR Jupyterhub comme ceci :
-Cell 1-
sparkDS=spark.read.parquet('s3://bucket_name/path').cache()
-Cell 2-
from pyspark.sql.functions import *
sparkDS_groupBy=sparkDS.groupBy('col1').agg(count('*').alias('count')).orderBy('col1')
pandasDF=sparkDS_groupBy.toPandas()
-cell 3-
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.plot(pandasDF)
Mon code échoue juste dans la cellule 3 avec l'erreur suivante :
NameError : le nom 'pandasDF' n'est pas défini.
Quelqu'un a-t-il une idée de ce qui ne va pas ?
Pourquoi la nouvelle cellule de mon notebook jupyterhub n'est pas capable de reconnaître une variable de la cellule précédente ?
Cela a-t-il un rapport avec la commande magique '%matplotlib inline' (j'ai également essayé avec '%matplotlib notebook', mais sans succès) ?
ps : J'utilise la configuration AWS 5.19 EMR-Jupyterhub notebook pour mon travail de traçage.
Cette erreur est un peu similaire à celle-ci, mais n'est pas un doublon. Comment faire fonctionner matplotlib dans le carnet Jupyter de AWS EMR ?