Je suis nouveau chez Spark et j'essaie d'installer PySpark en consultant le site ci-dessous.
http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/
J'ai essayé d'installer les deux paquetages pré-construits et aussi en construisant le paquetage Spark via SBT.
Lorsque j'essaie d'exécuter un code python dans IPython Notebook, j'obtiens l'erreur ci-dessous.
NameError Traceback (most recent call last)
<ipython-input-1-f7aa330f6984> in <module>()
1 # Check that Spark is working
----> 2 largeRange = sc.parallelize(xrange(100000))
3 reduceTest = largeRange.reduce(lambda a, b: a + b)
4 filterReduceTest = largeRange.filter(lambda x: x % 7 == 0).sum()
5
NameError: name 'sc' is not defined
Dans la fenêtre de commande, je peux voir l'erreur ci-dessous.
<strong>Failed to find Spark Assembly JAR.</strong>
<strong>You need to build Spark before running this program.</strong>
Notez que j'ai reçu une invite scala lorsque j'ai exécuté la commande spark-Shell
Mettre à jour:
Avec l'aide d'un ami, je peux résoudre le problème lié à Spark Assembly JAR en corrigeant le contenu du fichier .ipython/profile_pyspark/startup/00-pyspark-setup.py.
Je n'ai maintenant que le problème de la variable de contexte Spark. Changer le titre pour refléter correctement mon problème actuel.
Une solution consiste à ajouter pyspark-Shell
à la variable d’environnement Shell PYSPARK_SUBMIT_ARGS:
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-Shell"
Il y a un changement dans python/pyspark/Java_gateway.py , qui nécessite PYSPARK_SUBMIT_ARGS inclut pyspark-Shell
si une variable PYSPARK_SUBMIT_ARGS est définie par un utilisateur.
vous devez faire ce qui suit après avoir pyspark sur votre chemin:
from pyspark import SparkContext
sc =SparkContext()
Vous devez créer une instance de SparkContext comme suit:
importation:
from pyspark import SparkContext
et alors:
sc =SparkContext.getOrCreate()
NB: sc =SparkContext.getOrCreate()
fonctionne bien que sc =SparkContext()
.
Juste une petite amélioration. Ajoutez ce qui suit en haut de votre fichier de script python.
#! /bin/python
from pyspark import SparkContext, SparkConf
sc =SparkContext()
# your code starts here
J'avais une erreur similaire en essayant de faire fonctionner pySpark via PyCharm, et j'ai remarqué dans le journal que, juste avant cette erreur, j'avais cette erreur:
env: non trouvé
J'ai expliqué cela au fait que je n'avais pas de variable d'environnement domestique Java définie. J'ai donc ajouté Os.environ ['Java_HOME'] = "/usr/Java/jdk1.7.0_67-cloudera"
à mon script (je suis conscient que ce n'est probablement pas le meilleur endroit pour cela) et l'erreur disparaît et je crée mon objet spark
J'ai également rencontré le message d'erreur Java gateway process exited before sending the driver its port number
.
Je pourrais résoudre ce problème en téléchargeant l’une des versions pré-construites pour Hadoop (j’ai utilisé celle de hadoop 2.4). Comme je n'utilise pas Hadoop, je ne sais pas pourquoi cela a changé quelque chose, mais cela fonctionne maintenant parfaitement pour moi ...
Cela a fonctionné pour moi dans la version 2.3.1 de l'étincelle
from pyspark import SparkContext
sc = SparkContext()
J'ai ajouté les lignes ci-dessous fournies par Venu.
from pyspark import SparkContext
sc =SparkContext()
Ensuite, l'erreur suivante ci-dessous a été résolue en supprimant la variable d'environnement PYSPARK_SUBMIT_ARGS.
C:\Spark\spark-1.3.1-bin-hadoop2.6\python\pyspark\Java_gateway.pyc in launch_gateway() 77 callback_socket.close() 78 if gateway_port is None:
---> 79 raise Exception("Java gateway process exited before sending the driver its port number")
80
81 # In Windows, ensure the Java child processes do not linger after Python has exited. Exception: Java gateway process exited before sending the driver its port number
Spark sur mon Mac étant 1.6.0, l'ajout de pyspark-Shell
n'a pas résolu le problème. Ce qui a fonctionné pour moi est de suivre la réponse donnée ici par @karenyng
pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-Shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-Shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
J'ai eu le même problème dans mon cas, un autre cahier fonctionnait déjà (dans les versions récentes, ils sont en vert). J'ai sélectionné et arrêté l'un d'entre eux et cela a bien fonctionné.
Désolé d'appeler l'ancien fil, mais cela peut aider quelqu'un :)
Ce script a fonctionné pour moi (sous Linux):
#!/bin/bash
export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS="--pylab -c 'from pyspark import SparkContext; sc=SparkContext()' -i"
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-Shell"
pyspark
Pour appeler pyspark
comme j'appelle là-bas, je suppose que le chemin d'installation "spark/bin" est dans la variable PATH
. Sinon, appelez plutôt /path/to/spark/bin/pyspark
.