Sparkをインストールし、sbtアセンブリを実行しました。問題なくbin/pysparkを開くことができます。しかし、pysparkモジュールをipythonにロードする際に問題が発生しています。次のエラーが表示されます。
In [1]: import pyspark
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-c15ae3402d12> in <module>()
----> 1 import pyspark
/usr/local/spark/python/pyspark/__init__.py in <module>()
61
62 from pyspark.conf import SparkConf
---> 63 from pyspark.context import SparkContext
64 from pyspark.sql import SQLContext
65 from pyspark.rdd import RDD
/usr/local/spark/python/pyspark/context.py in <module>()
28 from pyspark.conf import SparkConf
29 from pyspark.files import SparkFiles
---> 30 from pyspark.Java_gateway import launch_gateway
31 from pyspark.serializers import PickleSerializer, BatchedSerializer, UTF8Deserializer, \
32 PairDeserializer, CompressedSerializer
/usr/local/spark/python/pyspark/Java_gateway.py in <module>()
24 from subprocess import Popen, PIPE
25 from threading import Thread
---> 26 from py4j.Java_gateway import Java_import, JavaGateway, GatewayClient
27
28
ImportError: No module named py4j.Java_gateway
私の環境(Dockerとイメージsequenceiq/spark:1.1.0-ubuntuを使用)で、これに遭遇しました。 pysparkシェルスクリプトを見ると、PYTHONPATHにいくつか追加する必要があることがわかります。
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.Zip:$PYTHONPATH
それは私のためにipythonで働いた。
更新:コメントに記載されているように、py4j Zipファイルの名前は、Sparkリリースなので、正しい名前を探してください。
.bashrcにいくつかのパスを追加して、この問題を解決しました
export SPARK_HOME=/home/a141890/apps/spark
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.Zip:$PYTHONPATH
この後、ImportError:py4j.Java_gatewayという名前のモジュールは発生しません。
Pycharmでは、上記のスクリプトを実行する前に、py4j * .Zipファイルが解凍されていることを確認してください。スクリプトsys.path.append( "path to spark */python/lib")にその参照を追加します
それは私のために働いた。
#/home/shubham/spark-1.6.2
import os
import sys
# Set the path for spark installation
# this is the path where you have built spark using sbt/sbt Assembly
os.environ['SPARK_HOME'] = "/home/shubham/spark-1.6.2"
# os.environ['SPARK_HOME'] = "/home/jie/d2/spark-0.9.1"
# Append to PYTHONPATH so that pyspark could be found
sys.path.append("/home/shubham/spark-1.6.2/python")
sys.path.append("/home/shubham/spark-1.6.2/python/lib")
# sys.path.append("/home/jie/d2/spark-0.9.1/python")
# Now we are ready to import Spark Modules
try:
from pyspark import SparkContext
from pyspark import SparkConf`enter code here`
print "Hey Nice"
except ImportError as e:
print ("Error importing Spark Modules", e)
sys.exit(1)
Pipモジュール「py4j」をインストールします。
pip install py4j
Spark 2.1.1およびPython 2.7.xでこの問題が発生しました。 Sparkが最新のディストリビューションでこのパッケージのバンドルを停止したかどうかはわかりません。しかし、py4j
モジュールをインストールすることで問題は解決しました。