Configuration de l'Étincelle de travailler avec Jupyter Portable et d'Anaconda
J'ai passé quelques jours en essayant de faire des Étincelles avec mon Jupyter Portable et Anaconda. Voici ce que mes .bash_profile ressemble:
PATH="/my/path/to/anaconda3/bin:$PATH"
export JAVA_HOME="/my/path/to/jdk"
export PYTHON_PATH="/my/path/to/anaconda3/bin/python"
export PYSPARK_PYTHON="/my/path/to/anaconda3/bin/python"
export PATH=$PATH:/my/path/to/spark-2.1.0-bin-hadoop2.7/bin
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark
export SPARK_HOME=/my/path/to/spark-2.1.0-bin-hadoop2.7
alias pyspark="pyspark --conf spark.local.dir=/home/puifais --num-executors 30 --driver-memory 128g --executor-memory 6g --packages com.databricks:spark-csv_2.11:1.5.0"
Quand je tape /my/path/to/spark-2.1.0-bin-hadoop2.7/bin/spark-shell
, je peux lancer Spark très bien dans ma ligne de commande shell. Et la sortie sc
n'est pas vide. Il semble bien fonctionner.
Quand je tape pyspark
, il se lance sur mon Jupyter Portable amende. Quand je crée un nouveau Python3 notebook, cette erreur s'affiche:
[IPKernelApp] WARNING | Unknown error in handling PYTHONSTARTUP file /my/path/to/spark-2.1.0-bin-hadoop2.7/python/pyspark/shell.py:
Et sc
dans mon Jupyter ordinateur Portable est vide.
Quelqu'un peut-il aider à résoudre cette situation?
Voulez juste pour préciser: Il n'y a rien après les deux-points à la fin de l'erreur. J'ai aussi essayé de créer mon propre fichier de démarrage à l'aide de cette post et je cite ici, donc vous n'avez pas à aller regarder là:
J'ai réalisé un petit script d'initialisation init_spark.py comme suit:
from pyspark import SparkConf, SparkContext conf = SparkConf().setMaster("yarn-client") sc = SparkContext(conf = conf)
et placé dans le ~/.ipython/profile_default/démarrage/répertoire
Quand j'ai fait cela, l'erreur est alors devenu:
[IPKernelApp] WARNING | Unknown error in handling PYTHONSTARTUP file /my/path/to/spark-2.1.0-bin-hadoop2.7/python/pyspark/shell.py:
[IPKernelApp] WARNING | Unknown error in handling startup files:
Non! Elle est vide. Il n'y a rien après la virgule.
Si vous supprimez ce
alias
ligne, ou essayez de supprimer certaines options? Le message d'erreur de changement?Juste essayé de supprimer les alias. Pas de différence. Toujours la même erreur 🙁
Voici un lien qui pourrait peut-être contribuer à stackoverflow.com/questions/33908156/.... L'ajout de pyspark-shell pour PYSPARK_SUBMIT_ARGS est la clé.
OriginalL'auteur puifais | 2017-12-15
Vous devez vous connecter pour publier un commentaire.
Conda peut aider à gérer correctement beaucoup de dépendances...
Installer étincelle. En supposant que l'étincelle est installé dans /opt/spark, l'inclure dans votre ~/.bashrc:
Créer une conda de l'environnement avec toutes les dépendances nécessaires en dehors de l'étincelle:
Activer l'environnement
Lancer un Jupyter Portable serveur:
Dans votre navigateur, créer un nouveau Python3 portable
Essayez de calculer PI avec le script suivant (emprunté à cette)
OriginalL'auteur Alain Domissy
Bien, elle me donne vraiment la douleur de voir comment de merde hacks, comme la mise en
PYSPARK_DRIVER_PYTHON=jupyter
, ont été promus à des "solutions" et ont tendance maintenant à devenir la norme des pratiques, malgré le fait qu'ils ont évidemment conduire à laid résultats, telles que la saisie depyspark
et de se retrouver avec un Jupyter ordinateur portable au lieu d'un PySpark shell, plus encore invisible problèmes tapis en aval, comme lorsque vous essayez d'utiliserspark-soumettre
avec les paramètres ci-dessus... 🙁(Ne vous méprenez pas, il n'est pas de votre faute et je ne suis pas blâmer vous; j'ai vu des dizaines de postes d'ici à où ALORS, cette "solution" a été proposé, accepté, et upvoted...).
Il y a une et une seule bonne façon de personnaliser un Jupyter ordinateur portable pour travailler avec d'autres langues (PySpark ici), et c'est l'utilisation de Jupyter noyaux.
La première chose à faire est d'exécuter un
jupyter kernelspec list
de commande, afin d'obtenir la liste de tous les déjà à la disposition des noyaux dans votre machine; en voici le résultat dans mon cas (Ubuntu):Le premier noyau,
python2
, est le "défaut" de l'un à venir avec IPython (il ya une grande chance que ce soit le seul présent dans votre système); pour le reste, j'ai 2 plus Python noyaux (caffe
&tensorflow
), un R un (ir
), et deux PySpark grains pour une utilisation avec Spark 1.6 et Spark 2.0 respectivement.Les entrées de la liste ci-dessus sont des répertoires, et chacun d'eux contient un seul fichier, nommé
kernel.json
. Voyons le contenu de ce fichier pour monpyspark2
noyau:Je n'ai pas pris la peine de changer mes informations de
/my/path/to
etc., et vous pouvez déjà voir qu'il existe des différences entre notre cas (j'utilise Intel Python 2.7, et pas Anaconda Python 3), mais j'espère que vous avez compris l'idée (BTW, ne vous inquiétez pas au sujet de laconnection_file
- je n'utilise pas non plus).Maintenant, la façon la plus simple pour vous serait de faire manuellement les modifications nécessaires (chemins) à mon ci-dessus montre le noyau et l'enregistrer dans un nouveau sous-dossier de la
.../jupyter/kernels
répertoire (de cette manière, il devrait être visible que si vous exécutez à nouveau unjupyter kernelspec list
de commande). Et si vous pensez que cette approche est aussi un hack, eh bien, je suis d'accord avec vous, mais c'est celui qui est recommandé dans le Jupyter documentation (page 12):Si vous n'avez pas déjà un
.../jupyter/kernels
dossier, vous pouvez toujours installer un nouveau noyau à l'aide dejupyter kernelspec install
- n'ai pas essayé, mais jetez un oeil à cette SORTE de réponse.Enfin, n'oubliez pas de retirer tous les PySpark liées à des variables d'environnement de votre bash profil (en laissant seulement
SPARK_HOME
devrait être OK). Et de confirmer que, lorsque vous tapezpyspark
, vous vous retrouvez avec un PySpark shell, comme il se doit, et non pas avec un Jupyter ordinateur portable...Mise à JOUR (après le commentaire): Si vous souhaitez passer des arguments de ligne de commande pour PySpark, vous devez ajouter le
PYSPARK_SUBMIT_ARGS
sousenv
; par exemple, ici, c'est la dernière ligne de mon respectifs fichier noyau pour Spark 1.6.0, où nous avons toujours eu à utiliser l'externe de l'étincelle-csv paquet pour la lecture de fichiers CSV:donc, j'ai entendu parler en effet, mais je n'avais pas le temps de l'essayer pour l'instant (ne pas)...
J'ai suivi ton exemple et d'installation pyspark noyau avec
Saprk 2.2.1
etPython 3.6
. Pouvez-vous me conseiller comment spécifier le pyspark noyau lors du démarrage de jupyter ordinateur portable à partir du terminalcomme de Toree 0.3.0 soutien pour PySpark (et SparkR) les noyaux a été interrompu à la suite de github commettre:
[TOREE-487][TOREE-488] Remove PySpark and SparkR interpreters Instead, please use a supported kernel such IPython or IRKernel
Ce post est une bouée de sauvetage.Magnifique réponse! 🙂
OriginalL'auteur desertnaut
Après tripoter un peu ici, je viens de conda installé sparkmagic (après ré-installation d'une version plus récente d'Étincelle).
Je pense que seul fonctionne tout simplement.
Je ne suis pas sûr que j'ai tripoté un peu avant, mais je place à cela comme une tentative de réponse car il est beaucoup plus simple que de bricoler les fichiers de configuration à la main.
OriginalL'auteur matanster