如何将PyCharm与PySpark链接?


79

我是apache spark的新手,显然我在macbook中安装了带自制程序的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://sparkDriver@192.168.1.64: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,如下所示:

不能用火花链接pycharm

然后从一个博客我尝试了这个:

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)

而且仍然无法开始将PySpark与Pycharm结合使用,如何将pyCharm与apache-pyspark链接起来?

更新:

然后我搜索apache-spark和python路径,以设置Pycharm的环境变量:

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) *

然后,根据以上信息,我尝试如下设置环境变量:

配置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

更新: 然后我尝试了@ 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 

在此处输入图片说明

出:

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/

Answers:


108

使用PySpark软件包(Spark 2.2.0和更高版本)

随着SPARK-1267被合并,你应该能够通过简化流程pip在您使用PyCharm发展环境中安装的火花。

  1. 转到文件->设置->项目解释器
  2. 单击安装按钮并搜索PySpark

    在此处输入图片说明

  3. 点击安装包按钮。

使用用户提供的Spark安装手动进行

创建运行配置

  1. 转到运行->编辑配置
  2. 添加新的Python配置
  3. 设置脚本路径,使其指向要执行的脚本
  4. 编辑环境变量字段,使其至少包含:

    • SPARK_HOME-它应指向Spark安装目录。它应包含的目录,例如bin(具有spark-submitspark-shell等)和conf(用spark-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、0.10.7-2.4 )

      在此处输入图片说明

  5. 套用设定

将PySpark库添加到解释器路径(代码完成所需)

  1. 转到文件->设置->项目解释器
  2. 您要与Spark一起使用的解释器的打开设置
  3. 编辑解释器路径,使其包含指向的路径$SPARK_HOME/python(如果需要,则为Py4J)
  4. 保存设置

可选地

  1. 安装或添加与安装的Spark版本匹配的路径类型注释,以更好地完成和进行静态错误检测(免责声明-我是该项目的作者)。

最后

使用新创建的配置来运行脚本。


9
顺便说一句,至少在PyCharm 2016中,这就是您编辑解释器路径的方式:jetbrains.com/help/pycharm/2016.1/…选择“显示所选解释器的路径”按钮
AlonL

3
在Mac版本的PyCharm(v-2017.2)上,“项目解释器”位于“首选项...”而不是“文件/设置
随机确定性”

1
使用选项1,如何添加Spark JAR /程序包?例如,我需要com.databricks:spark-redshift_2.10:3.0.0-preview1
lfk

@lfk通过配置文件(spark-defaults.conf)或通过提交args-Jupyter notebook相同。如果您喜欢此选项,则可以在PyCharm的Environment变量(而不是代码)中定义Submit args。
10465355说,

38

这是我在Mac OS X上解决此问题的方法。

  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
    

在此处输入图片说明


这是pycharm的哪个版本?我正在使用2016.1社区版,但没有看到此窗口。
ravindrab '16

2016.1我在osx上,但应该类似。转到“首选项”下。单击左侧的项目。
sthomps

谢谢。这对没有项目解释器设置的IntelliJ IDEA有所帮助。
OneCricketeer '16

您能否解释一下添加到内容根目录的作用?我不需要这样做...我只是将其$SPARK_HOME/python放在解释器类路径中,并添加了环境变量,它可以按预期工作。
OneCricketeer '16

@ cricket_007第三点:Add pyspark and py4j to content root (use the correct Spark version)帮助我完成了代码。您是如何通过更改Project Interpreter来完成的?
Ajeet Shah'8

13

这是适用于我的设置(Win7 64bit,PyCharm2017.3CE)

设置Intellisense:

  1. 单击文件->设置->项目:->项目解释器

  2. 点击“项目解释器”下拉菜单右侧的齿轮图标

  3. 从上下文菜单中单击“更多...”。

  4. 选择解释器,然后单击“显示路径”图标(右下方)

  5. 单击+图标,两个添加以下路径:

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

    \ bin \ python \ lib \ pyspark.zip

  6. 单击确定,确定,确定

继续并测试您的新智能感知功能。


1
非常需要的答案:)
Rohit Nimmala

5

在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。


4

我使用以下页面作为参考,并能够获取PyCharm 5中导入的pyspark / Spark 1.6.1(通过自制软件安装)。

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时出现了网关错误。自制的Spark出现了一些问题,所以我只是从Spark网站上获取了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 -与python和Hadoop上的火花/

我敢肯定有人花了几个小时将头撞在显示器上,试图使它正常工作,因此希望这可以节省他们的理智!


2

conda用来管理我的Python包。因此,我在PyCharm以外的终端中所做的就是:

conda install pyspark

或者,如果您想使用早期版本,例如2.2.0,请执行以下操作:

conda install pyspark=2.2.0

这也会自动拉入py4j。然后,PyCharm不再抱怨import pyspark...,代码完成也起作用。请注意,我的PyCharm项目已经配置为使用Anaconda随附的Python解释器。


1

看看这部影片。

假设您的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环境变量添加火花,这种方法在pycharm之外效果很好,但是由于某些原因,它们在pycharm中未被识别,但是这种方法效果很好。


@ml_student我还要提到,如果您遵循video方法(这是我建议的速度和便捷性),则也需要SparkContext在脚本开始时实例化一个对象。我注意到这一点是因为通过命令行使用交互式pyspark控制台会自动为您创建上下文,而在PyCharm中,您需要自己照顾一下。语法为:sc = SparkContext()
Jason Wolosonovich,2016年

1

在启动IDE或Python之前,您需要先设置PYTHONPATH,SPARK_HOME。

Windows,编辑环境变量,将spark python和py4j添加到

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

Unix,

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

1

最简单的方法是通过项目解释器安装PySpark。

  1. 转到文件-设置-项目-项目解释器
  2. 单击右上角的+图标。
  3. 搜索PySpark和其他要安装的软件包
  4. 最后点击安装包
  5. 完成!!

0

文档中

要在Python中运行Spark应用程序,请使用Spark目录中的bin / spark-submit脚本。该脚本将加载Spark的Java / Scala库,并允许您将应用程序提交到集群。您还可以使用bin / pyspark启动交互式Python Shell。

您正在直接使用CPython解释器调用脚本,我认为这会引起问题。

尝试使用以下命令运行脚本:

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

如果可行,您可以通过将项目的解释器设置为火花提交,使其在PyCharm中运行。


通过将项目的解释器设置为“火花提交”,您应该能够使其在PyCharm中正常工作。“所选文件不是Python SDK的有效主目录”。同样适用于bin/pyspark
OneCricketeer 2016年

0

我按照在线教程进行操作,并将env变量添加到.bashrc中:

# 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

然后,我刚刚在SPARK_HOME和PYTHONPATH中获得了pycharm的值:

(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

我用pycharm链接python和spark。我的PC中已预装Java和Spark。

这些是我遵循的步骤

  1. 建立新专案

  2. 在“新建项目设置”->中,我选择了Python3.7(venv)作为我的python。这是我新项目内venv文件夹中的python.exe文件。您可以在您的PC中提供任何可用的python。

  3. 在设置->项目结构->添加Content_Root

    我添加了两个zip文件夹作为spark目录

    1. C:\ Users \ USER \ spark-3.0.0-preview2-bin-hadoop2.7 \ python \ lib \ py4j-0.10.8.1-src.zip
    2. C:\ Users \ USER \ spark-3.0.0-preview2-bin-hadoop2.7 \ python \ lib \ pyspark.zip
  4. 在新项目中创建一个python文件。然后转到“编辑配置”(在右上角的下拉列表中),然后选择“环境变量”

  5. 我使用以下环境变量,对我来说效果很好

    1. PYTHONUNBUFFERED 1
    2. JAVA_HOME C:\ Program Files \ Java \ jre1.8.0_251
    3. PYSPARK_PYTHON C:\ Users \ USER \ PycharmProjects \ pyspark \ venv \ Scripts \ python.exe
    4. SPARK_HOME C:\ Users \ USER \ spark-3.0.0-preview2-bin-hadoop2.7
    5. HADOOP_HOME C:\ Users \ USER \ winutils

    您可能还需要下载winutils.exe并将其放在路径C:\ Users \ USER \ winutils \ bin中

  6. 在“编辑配置”->“模板”中提供相同的环境变量

  7. 转到设置->项目解释器->导入pyspark

  8. 运行您的第一个pyspark程序!


0

来自pyspark_xray的本教程(该工具可在PyCharm上调试pyspark代码)可以回答您的问题。它涵盖Windows和Mac。

制备

  • 打开命令行,启动java命令,如果出现错误,请下载并安装Java(截至2020年4月的1.8.0_221版)
  • 如果没有,请下载并安装PyCharm社区版(2020年4月版本2020.1)
  • 如果没有,请下载并安装Anaconda Python 3.7运行时
  • 下载并安装火花最新的预建为Apache的Hadoop(火花2.4.5彬hadoop2.7截至4月到2020年,200 + MB大小)本地
    • Windows
      • 如果您没有解压缩工具,请下载并安装7zip,这是一个免费的zip / unzip文件工具
      • 将spark tgz文件的内容提取到c:\ spark-xxx-bin-hadoopx.x文件夹
      • 遵循本教程中的步骤
        • 安装winutils.exec:\spark-x.x.x-bin-hadoopx.x\bin文件夹中,如果没有此可执行文件,则在编写引擎输出时会遇到错误
    • Mac
      • 将spark tgz文件的内容提取到\ Users [USERNAME] \ spark-xxx-bin-hadoopx.x文件夹
  • 通过或安装pysparkpip install pysparkconda install pyspark

运行配置

您可以通过发出spark-submit将Spark作业提交到集群的命令从命令行在集群上运行Spark应用程序。但是,spark-submit不能使用本地笔记本电脑或PC上的PyCharm或其他IDE来启动Spark作业。相反,请按照以下步骤在PyCharm上设置pyspark_xray的demo_app的运行配置

  • 设置环境变量:
    • 设定HADOOP_HOMEC:\spark-2.4.5-bin-hadoop2.7
    • 设定SPARK_HOMEC:\spark-2.4.5-bin-hadoop2.7
  • 使用Github Desktop或其他git工具pyspark_xray从Github克隆
  • PyCharm>将pyspark_xray作为项目打开
  • 打开PyCharm>运行>编辑配置>默认值> Python,然后输入以下值:
    • 环境变量(Windows):PYTHONUNBUFFERED=1;PYSPARK_PYTHON=python;PYTHONPATH=$SPARK_HOME/python;PYSPARK_SUBMIT_ARGS=pyspark-shell;
  • 打开PyCharm>运行>编辑配置,创建一个新的Python配置,将脚本指向driver.pypyspark_xray> demo_app的路径

驱动程序运行配置


-1

最简单的方法是

转到anaconda / python安装的site-packages文件夹,复制粘贴pysparkpyspark.egg-info文件夹。

重新启动pycharm以更新索引。上述两个文件夹位于spark安装的spark / python文件夹中。这样,您还将从pycharm中获得代码完成建议。

该站点包可以在python安装中轻松找到。在anaconda中,其在anaconda / lib / pythonx.x / site-packages下


pycharm这样会认为它是另一个库。
HS Rathore

-1

我试图通过Project Interpreter菜单添加pyspark模块,但还不够...需要设置一些系统环境变量,SPARK_HOME以及/hadoop/bin/winutils.exe要读取本地数据文件的路径。您还需要使用系统环境变量和中可用的正确版本的Python,JRE,JDK PATH。经过大量搜索之后,这些视频中说明仍然有效

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.