私はApache sparkを初めて使用し、明らかにMacbookにhomebrewでApache-sparkをインストールしました。
Last login: Fri Jan 8 12:52:04 on console
user@MacBook-Pro-de-User-2:~$ pyspark
Python 2.7.10 (default, Jul 13 2015, 12:05:58)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
16/01/08 14:46:44 INFO SparkContext: Running Spark version 1.5.1
16/01/08 14:46:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
16/01/08 14:46:47 INFO SecurityManager: Changing view acls to: user
16/01/08 14:46:47 INFO SecurityManager: Changing modify acls to: user
16/01/08 14:46:47 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(user); users with modify permissions: Set(user)
16/01/08 14:46:50 INFO Slf4jLogger: Slf4jLogger started
16/01/08 14:46:50 INFO Remoting: Starting remoting
16/01/08 14:46:51 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:50199]
16/01/08 14:46:51 INFO Utils: Successfully started service 'sparkDriver' on port 50199.
16/01/08 14:46:51 INFO SparkEnv: Registering MapOutputTracker
16/01/08 14:46:51 INFO SparkEnv: Registering BlockManagerMaster
16/01/08 14:46:51 INFO DiskBlockManager: Created local directory at /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/blockmgr-769e6f91-f0e7-49f9-b45d-1b6382637c95
16/01/08 14:46:51 INFO MemoryStore: MemoryStore started with capacity 530.0 MB
16/01/08 14:46:52 INFO HttpFileServer: HTTP File server directory is /private/var/folders/5x/k7n54drn1csc7w0j7vchjnmc0000gn/T/spark-8e4749ea-9ae7-4137-a0e1-52e410a8e4c5/httpd-1adcd424-c8e9-4e54-a45a-a735ade00393
16/01/08 14:46:52 INFO HttpServer: Starting HTTP Server
16/01/08 14:46:52 INFO Utils: Successfully started service 'HTTP file server' on port 50200.
16/01/08 14:46:52 INFO SparkEnv: Registering OutputCommitCoordinator
16/01/08 14:46:52 INFO Utils: Successfully started service 'SparkUI' on port 4040.
16/01/08 14:46:52 INFO SparkUI: Started SparkUI at http://192.168.1.64:4040
16/01/08 14:46:53 WARN MetricsSystem: Using default name DAGScheduler for source because spark.app.id is not set.
16/01/08 14:46:53 INFO Executor: Starting executor ID driver on Host localhost
16/01/08 14:46:53 INFO Utils: Successfully started service 'org.Apache.spark.network.netty.NettyBlockTransferService' on port 50201.
16/01/08 14:46:53 INFO NettyBlockTransferService: Server created on 50201
16/01/08 14:46:53 INFO BlockManagerMaster: Trying to register BlockManager
16/01/08 14:46:53 INFO BlockManagerMasterEndpoint: Registering block manager localhost:50201 with 530.0 MB RAM, BlockManagerId(driver, localhost, 50201)
16/01/08 14:46:53 INFO BlockManagerMaster: Registered BlockManager
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 1.5.1
/_/
Using Python version 2.7.10 (default, Jul 13 2015 12:05:58)
SparkContext available as sc, HiveContext available as sqlContext.
>>>
MLlibについてさらに学ぶために、プレイを開始したいと思います。ただし、Pycharmを使用してPythonでスクリプトを記述します。問題は、Pycharmに移動してpysparkを呼び出そうとすると、Pycharmがモジュールを見つけられないことです。次のようにPycharmにパスを追加しようとしました:
それから blog からこれを試しました:
import os
import sys
# Path for spark source folder
os.environ['SPARK_HOME']="/Users/user/Apps/spark-1.5.2-bin-hadoop2.4"
# Append pyspark to Python Path
sys.path.append("/Users/user/Apps/spark-1.5.2-bin-hadoop2.4/python/pyspark")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
そして、PyCharmでPySparkを使用し始めることはできません。PyCharmとApache-pysparkを「リンク」する方法についてのアイデアはありませんか。
更新:
次に、Pycharmの環境変数を設定するために、Apache-sparkとpythonパスを検索します。
Apache-sparkパス:
user@MacBook-Pro-User-2:~$ brew info Apache-spark
Apache-spark: stable 1.6.0, HEAD
Engine for large-scale data processing
https://spark.Apache.org/
/usr/local/Cellar/Apache-spark/1.5.1 (649 files, 302.9M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/Apache-spark.rb
pythonパス:
user@MacBook-Pro-User-2:~$ brew info python
python: stable 2.7.11 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org
/usr/local/Cellar/python/2.7.10_2 (4,965 files, 66.9M) *
次に、上記の情報を使用して、環境変数を次のように設定しようとしました。
Pycharmとpysparkを正しくリンクする方法についての考えはありますか?
次に、上記の構成でpythonスクリプトを実行すると、次の例外が発生します。
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/user/PycharmProjects/spark_examples/test_1.py
Traceback (most recent call last):
File "/Users/user/PycharmProjects/spark_examples/test_1.py", line 1, in <module>
from pyspark import SparkContext
ImportError: No module named pyspark
UPDATE:次に、@ zero323によって提案されたこの構成を試しました
構成1:
/usr/local/Cellar/Apache-spark/1.5.1/
でる:
user@MacBook-Pro-de-User-2:/usr/local/Cellar/Apache-spark/1.5.1$ ls
CHANGES.txt NOTICE libexec/
INSTALL_RECEIPT.json README.md
LICENSE bin/
構成2:
/usr/local/Cellar/Apache-spark/1.5.1/libexec
でる:
user@MacBook-Pro-de-User-2:/usr/local/Cellar/Apache-spark/1.5.1/libexec$ ls
R/ bin/ data/ examples/ python/
RELEASE conf/ ec2/ lib/ sbin/
SPARK-1267 をマージすると、pip
をPyCharm開発に使用する環境にSparkをインストールすることでプロセスを簡素化できるはずです。
実行構成の作成:
Environment variablesフィールドを編集して、少なくとも以下が含まれるようにします。
SPARK_HOME
-Sparkがインストールされているディレクトリを指す必要があります。 bin
(spark-submit
、spark-Shell
など)やconf
(spark-defaults.conf
、spark-env.sh
など)などのディレクトリを含める必要がありますPYTHONPATH
-$SPARK_HOME/python
が含まれている必要があり、使用できない場合はオプションで$SPARK_HOME/python/lib/py4j-some-version.src.Zip
が含まれている必要があります。 some-version
は、特定のSparkインストールで使用されるPy4Jバージョンと一致する必要があります(0.8.2.1-1.5、0.9-1.6、0.10.3-2.0、0.10.4-2.1、0.10.4-2.2、0.10.6- 2.3)
設定を適用する
PySparkライブラリをインタプリタパスに追加します(コード補完に必要です):
$SPARK_HOME/python
(必要に応じてPy4J)へのパスが含まれるようにインタープリターパスを編集します新しく作成した構成を使用して、スクリプトを実行します。
Mac OSXでこれを解決した方法は次のとおりです。
brew install Apache-spark
これを〜/ .bash_profileに追加します
export SPARK_VERSION=`ls /usr/local/Cellar/Apache-spark/ | sort | tail -1`
export SPARK_HOME="/usr/local/Cellar/Apache-spark/$SPARK_VERSION/libexec"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.Zip:$PYTHONPATH
Pysparkおよびpy4jをコンテンツルートに追加します(正しいSparkバージョンを使用):
/usr/local/Cellar/Apache-spark/1.6.1/libexec/python/lib/py4j-0.9-src.Zip
/usr/local/Cellar/Apache-spark/1.6.1/libexec/python/lib/pyspark.Zip
私のために働くセットアップはここにあります(Win7 64ビット、PyCharm2017.3CE)
Intellisenseをセットアップします。
[ファイル]-> [設定]-> [プロジェクト]をクリックします。->プロジェクトインタープリター
Project Interpreterドロップダウンの右側にある歯車アイコンをクリックします
コンテキストメニューから[その他...]をクリックします。
インタープリターを選択し、「パスを表示」アイコン(右下)をクリックします
[+]アイコンをクリックして、次のパスを追加します。
\ python\lib\py4j-0.9-src.Zip
\ bin\python\lib\pyspark.Zip
OK、OK、OKをクリックします
先に進んで、新しいインテリセンス機能をテストしてください。
PycharmでPysparkを構成する(Windows)
File menu - settings - project interpreter - (gearshape) - more - (treebelowfunnel) - (+) - [add python folder form spark installation and then py4j-*.Zip] - click ok
Windows環境でSPARK_HOMEが設定されていることを確認してください。pycharmはそこから取得します。確認するために :
Run menu - edit configurations - environment variables - [...] - show
オプションで、環境変数にSPARK_CONF_DIRを設定します。
次のページを参照として使用し、pyspark/Spark 1.6.1(homebrew経由でインストール)をPyCharm 5にインポートすることができました。
http://renien.com/blog/accessing-pyspark-pycharm/
import os
import sys
# Path for spark source folder
os.environ['SPARK_HOME']="/usr/local/Cellar/Apache-spark/1.6.1"
# Append pyspark to Python Path
sys.path.append("/usr/local/Cellar/Apache-spark/1.6.1/libexec/python")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
上記により、pysparkはロードされますが、SparkContextを作成しようとするとゲートウェイエラーが発生します。 homebrewのSparkにはいくつかの問題があるため、Spark WebサイトからSparkを取得し(Hadoop 2.6以降のPre-builtをダウンロード)、その下のsparkおよびpy4jディレクトリ。 pycharmで動作するコードを次に示します!
import os
import sys
# Path for spark source folder
os.environ['SPARK_HOME']="/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6"
# Need to Explicitly point to python3 if you are using Python 3.x
os.environ['PYSPARK_PYTHON']="/usr/local/Cellar/python3/3.5.1/bin/python3"
#You might need to enter your local IP
#os.environ['SPARK_LOCAL_IP']="192.168.2.138"
#Path for pyspark and py4j
sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python")
sys.path.append("/Users/myUser/Downloads/spark-1.6.1-bin-hadoop2.6/python/lib/py4j-0.9-src.Zip")
try:
from pyspark import SparkContext
from pyspark import SparkConf
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
sys.exit(1)
sc = SparkContext('local')
words = sc.parallelize(["scala","Java","hadoop","spark","akka"])
print(words.count())
私はこれらの指示から多くの助けを得て、PyDevでトラブルシューティングしてからPyCharmを動作させるのに役立ちました- https://enahwe.wordpress.com/2015/11/25/how-to-configure-Eclipse -for-developing-with-python-and-spark-on-hadoop /
誰かがこれを機能させるために数時間かけて頭をモニターにぶつけたので、正気を保つのに役立つことを願っています!
conda
を使用して、Pythonパッケージを管理します。それで、PyCharmの外のターミナルで私がしたことはすべて:
conda install pyspark
または、2.2.0などの以前のバージョンが必要な場合は、次のようにします。
conda install pyspark=2.2.0
これにより、py4jも自動的に取り込まれます。その後、PyCharmはimport pyspark...
について文句を言わなくなり、コード補完も機能しました。私のPyCharmプロジェクトは、Anacondaに付属のPythonインタープリターを使用するように既に構成されていることに注意してください。
このビデオ をご覧ください
spark pythonディレクトリが/home/user/spark/python
であると仮定します
Py4jのソースが/home/user/spark/python/lib/py4j-0.9-src.Zip
であると仮定します
基本的に、spark pythonディレクトリとその中のpy4jディレクトリをインタープリターパスに追加します。スクリーンショットを投稿するほどの評判がありません。
ビデオでは、ユーザーはpycharm自体に仮想環境を作成しますが、pycharmの外部で仮想環境を作成するか、既存の仮想環境をアクティブにしてからpycharmを起動し、それらのパスを仮想環境インタープリターパスに追加できますpycharm内。
Bash環境変数を介してsparkを追加するために他の方法を使用しましたが、これはpycharmの外部ではうまく機能しますが、何らかの理由でpycharm内で認識されませんでしたが、この方法は完全に機能しました。
IDEまたはPythonを起動する前に、PYTHONPATH、SPARK_HOMEをセットアップする必要があります。
Windows、環境変数の編集、spark pythonおよびpy4jの追加
PYTHONPATH=%PYTHONPATH%;{py4j};{spark python}
Unix、
export PYTHONPATH=${PYTHONPATH};{py4j};{spark/python}
オンラインでチュートリアルに従って、.bashrcにenv変数を追加しました。
# add pyspark to python
export SPARK_HOME=/home/lolo/spark-1.6.1
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.Zip:$PYTHONPATH
それから、pycharmへのSPARK_HOMEとPYTHONPATHの値を取得しました。
(srz-reco)lolo@K:~$ echo $SPARK_HOME
/home/lolo/spark-1.6.1
(srz-reco)lolo@K:~$ echo $PYTHONPATH
/home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.Zip:/home/lolo/spark-1.6.1/python/:/home/lolo/spark-1.6.1/python/lib/py4j-0.9-src.Zip:/home/lolo/spark-1.6.1/python/:/python/lib/py4j-0.8.2.1-src.Zip:/python/:
次に、スクリプトの実行/デバッグ構成->環境変数にコピーしました。
ドキュメント から:
PythonでSparkアプリケーションを実行するには、Sparkディレクトリにあるbin/spark-submitスクリプトを使用します。このスクリプトは、SparkのJava/Scalaライブラリをロードし、アプリケーションをクラスターに送信できるようにします。 bin/pysparkを使用して、インタラクティブなPythonシェルを起動することもできます。
CPythonインタープリターでスクリプトを直接呼び出していますが、これが問題を引き起こしていると思います。
次を使用してスクリプトを実行してみてください。
"${SPARK_HOME}"/bin/spark-submit test_1.py
それが機能する場合は、プロジェクトのインタープリターをspark-submitに設定することでPyCharmで機能させることができます。