web-dev-qa-db-fra.com

Contexte Spark 'sc' non défini

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.

14
Arvind

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.

12
Zak.2Z

vous devez faire ce qui suit après avoir pyspark sur votre chemin:

from pyspark import SparkContext
sc =SparkContext()
29
venuktan

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

8
HISI

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
5
Shafiq

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

2
JmcG

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

2
harppu

Cela a fonctionné pour moi dans la version 2.3.1 de l'étincelle 

from pyspark import SparkContext
sc = SparkContext()
2
Dheeraj

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
2
Arvind

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
1
MKR

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

0
Ganesh Satpute

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.

0
Paco Barter