web-dev-qa-db-fra.com

findpark.init () IndexError: erreur de la liste d'index hors limites

lorsque j'exécute ce qui suit dans un environnement Jupyter Python 3.5, le message d'erreur ci-dessous s'affiche. Des idées sur ce qui le cause?

import findspark
findspark.init()

erreur:

IndexError                                Traceback (most recent call
last) <ipython-input-20-2ad2c7679ebc> in <module>()
      1 import findspark
----> 2 findspark.init()
      3 
      4 import pyspark

/.../anaconda/envs/pyspark/lib/python3.5/site-packages/findspark.py in init(spark_home, python_path, edit_rc, edit_profile)
    132     # add pyspark to sys.path
    133     spark_python = os.path.join(spark_home, 'python')
--> 134     py4j = glob(os.path.join(spark_python, 'lib', 'py4j-*.Zip'))[0]
    135     sys.path[:0] = [spark_python, py4j]
    136 

IndexError: list index out of range
8
tjb305

Cela est probablement dû au fait que la variable d'environnement SPARK_HOME n'a pas été définie correctement sur votre système. Sinon, vous pouvez simplement le spécifier lors de l'initialisation de findspark, comme suit:

import findspark
findspark.init('/path/to/spark/home')

Après cela, tout devrait fonctionner!

5
gregoltsov

J'obtenais la même erreur et j'ai pu le faire fonctionner en entrant le répertoire d'installation exact:

import findspark
# Use this
findspark.init("C:\Users\PolestarEmployee\spark-1.6.3-bin-hadoop2.6")
# Test
from pyspark import SparkContext, SparkConf

Fondamentalement, c'est le répertoire où spark a été extrait. À l'avenir, chaque fois que vous verrez spark_home entrer le même répertoire d'installation. J'ai aussi essayé d'utiliser toree pour créer un kernal, mais cela échoue d'une manière ou d'une autre. Un kernal serait une solution plus propre.

3
ug2409

Vous devez mettre à jour la variable SPARK_HOME dans bash_profile. Pour moi, la commande suivante a fonctionné (en terminal):

export SPARK_HOME="/usr/local/Cellar/Apache-spark/2.2.0/libexec/"

Après cela, vous pouvez utiliser les commandes suivantes:

import findspark
findspark.init('/usr/local/Cellar/Apache-spark/2.2.0/libexec')
1
Anurag Sharma