web-dev-qa-db-ja.com

PyCharmとPySparkをリンクする方法は?

私は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にパスを追加しようとしました:

cant link pycharm with spark

それから 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) *

次に、上記の情報を使用して、環境変数を次のように設定しようとしました。

configuration 1

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/ 

conf 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 

enter image description here

でる:

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/
67
tumbleweed

PySparkパッケージ(Spark 2.2.0以降)

SPARK-1267 をマージすると、pipをPyCharm開発に使用する環境にSparkをインストールすることでプロセスを簡素化できるはずです。

  1. File->Settings->Project Interpreterに移動します
  2. インストールボタンをクリックして、PySparkを検索します

    enter image description here

  3. [パッケージのインストール]ボタンをクリックします。

ユーザー提供のSparkインストールで手動で

実行構成の作成

  1. Run->Edit configurationに移動します
  2. 新しいPython構成を追加します
  3. 実行するスクリプトを指すようにScriptパスを設定します
  4. Environment variablesフィールドを編集して、少なくとも以下が含まれるようにします。

    • SPARK_HOME-Sparkがインストールされているディレクトリを指す必要があります。 binspark-submitspark-Shellなど)やconfspark-defaults.confspark-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)

      enter image description here

  5. 設定を適用する

PySparkライブラリをインタプリタパスに追加します(コード補完に必要です)

  1. File->Settings->Project Interpreterに移動します
  2. Sparkで使用するインタープリターの設定を開く
  3. $SPARK_HOME/python(必要に応じてPy4J)へのパスが含まれるようにインタープリターパスを編集します
  4. 設定を保存する

必要に応じて

  1. インストールまたはパスへの追加 タイプアノテーション インストール済みのSparkバージョンと一致して、より良い完了と静的エラー検出を取得します(免責事項-私はプロジェクトの著者です)。

最後に

新しく作成した構成を使用して、スクリプトを実行します。

93
zero323

Mac OSXでこれを解決した方法は次のとおりです。

  1. brew install Apache-spark
  2. これを〜/ .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
    
  3. 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
    

enter image description here

33
sthomps

私のために働くセットアップはここにあります(Win7 64ビット、PyCharm2017.3CE)

Intellisenseをセットアップします。

  1. [ファイル]-> [設定]-> [プロジェクト]をクリックします。->プロジェクトインタープリター

  2. Project Interpreterドロップダウンの右側にある歯車アイコンをクリックします

  3. コンテキストメニューから[その他...]をクリックします。

  4. インタープリターを選択し、「パスを表示」アイコン(右下)をクリックします

  5. [+]アイコンをクリックして、次のパスを追加します。

    \ python\lib\py4j-0.9-src.Zip

    \ bin\python\lib\pyspark.Zip

  6. OK、OK、OKをクリックします

先に進んで、新しいインテリセンス機能をテストしてください。

12
Michael

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を設定します。

5
Gaurav Khare

次のページを参照として使用し、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 /

誰かがこれを機能させるために数時間かけて頭をモニターにぶつけたので、正気を保つのに役立つことを願っています!

4
obug

condaを使用して、Pythonパッケージを管理します。それで、PyCharmの外のターミナルで私がしたことはすべて:

conda install pyspark

または、2.2.0などの以前のバージョンが必要な場合は、次のようにします。

conda install pyspark=2.2.0

これにより、py4jも自動的に取り込まれます。その後、PyCharmはimport pyspark...について文句を言わなくなり、コード補完も機能しました。私のPyCharmプロジェクトは、Anacondaに付属のPythonインタープリターを使用するように既に構成されていることに注意してください。

2
snark

このビデオ をご覧ください

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内で認識されませんでしたが、この方法は完全に機能しました。

1

IDEまたはPythonを起動する前に、PYTHONPATH、SPARK_HOMEをセットアップする必要があります。

Windows、環境変数の編集、spark pythonおよびpy4jの追加

PYTHONPATH=%PYTHONPATH%;{py4j};{spark python}

Unix、

export PYTHONPATH=${PYTHONPATH};{py4j};{spark/python}
1
tczhaodachuan

オンラインでチュートリアルに従って、.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/:

次に、スクリプトの実行/デバッグ構成->環境変数にコピーしました。

0
thecheech

ドキュメント から:

PythonでSparkアプリケーションを実行するには、Sparkディレクトリにあるbin/spark-submitスクリプトを使用します。このスクリプトは、SparkのJava/Scalaライブラリをロードし、アプリケーションをクラスターに送信できるようにします。 bin/pysparkを使用して、インタラクティブなPythonシェルを起動することもできます。

CPythonインタープリターでスクリプトを直接呼び出していますが、これが問題を引き起こしていると思います。

次を使用してスクリプトを実行してみてください。

"${SPARK_HOME}"/bin/spark-submit test_1.py

それが機能する場合は、プロジェクトのインタープリターをspark-submitに設定することでPyCharmで機能させることができます。

0
grc