web-dev-qa-db-ja.com

findspark.init()IndexError:範囲外エラーのリストインデックス

Python 3.5 Jupyter環境で以下を実行すると、以下のエラーが発生します。それを引き起こしている原因に関するアイデアはありますか?

import findspark
findspark.init()

エラー:

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
15
tjb305

これは、SPARK_HOME環境変数がシステムで正しく設定されていません。または、findsparkを初期化するときに次のように指定することもできます。

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

その後、それはすべてうまくいくはずです!

11
gregoltsov

私は同じエラーを受け取り、正確なインストールディレクトリを入力することでそれを機能させることができました:

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

基本的には、sparkが抽出されたディレクトリです。将来的にはspark_home同じインストールディレクトリを入力します。代わりにtoreeを使用してカーネルを作成しようとしましたが、どういうわけか失敗しています。カーネルはよりクリーンなソリューションです。

6
ug2409

Bash_profile内のSPARK_HOME変数を更新する必要があります。私にとって、次のコマンドは(端末で)機能しました:

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

この後、次のコマンドを使用できます。

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