apache spark - 在python中导入pyspark

这是另一个从未回答过的论坛上的别人问题的副本,所以我想我会在这里重新提问,因为我有同样的问题。 (见[http://geekple.com/blogs/feeds/Xgzu7/posts/351703064084736)]

我在我的机器上正确安装了Spark,并且当使用./bin/pyspark作为我的python解释器时,能够使用pyspark模块运行python程序而不会出错。

但是,当我尝试运行常规Python shell时,当我尝试导入pyspark模块时,我收到此错误:

from pyspark import SparkContext

它说

"No module named pyspark".

我怎样才能解决这个问题? 是否需要设置环境变量以将Python指向pyspark headers / libraries / etc. 如果我的火花安装是/ spark /,我需要包含哪些pyspark路径? 或者pyspark程序只能从pyspark解释器运行?

17个解决方案

77 votes

这是一个简单的方法(如果你不打扰它如何工作!!!)

使用findspark

转到你的python shell

from pyspark import SparkContext

from pyspark import SparkConf

导入必要的模块

from pyspark import SparkContext

from pyspark import SparkConf

完成!

Suresh2692 answered 2019-07-27T06:15:28Z

45 votes

如果它打印出这样的错误:

ImportError:没有名为py4j.java_gateway的模块

请将$ SPARK_HOME / python / build添加到PYTHONPATH:

export SPARK_HOME=/Users/pzhang/apps/spark-1.1.0-bin-hadoop2.4

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

Peng Zhang 1516540 answered 2019-07-27T06:16:06Z

38 votes

原来pyspark bin是LOADING python并自动加载正确的库路径。 查看$ SPARK_HOME / bin / pyspark:

# Add the PySpark classes to the Python path:

export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH

我将此行添加到我的.bashrc文件中,现在可以正确找到模块!

Glenn Strycker answered 2019-07-27T06:16:38Z

19 votes

不要运行你的py文件:python filename.py而是使用:spark-submit filename.py

dodo answered 2019-07-27T06:17:04Z

18 votes

通过导出SPARK路径和Py4j路径,它开始工作:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.5.1

export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH

因此,如果您不想在每次要启动Python shell时键入这些内容,您可能希望将其添加到.bashrc文件中

Dawny33 answered 2019-07-27T06:17:40Z

15 votes

在Mac上,我使用Homebrew来安装Spark(公式为“apache-spark”)。 然后,我以这种方式设置PYTHONPATH,以便Python导入工作:

export SPARK_HOME=/usr/local/Cellar/apache-spark/1.2.0

export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

将“1.2.0”替换为mac上的实际apache-spark版本。

jyu answered 2019-07-27T06:18:17Z

11 votes

对于在pyspark中执行Spark,需要两个组件一起工作:

getOrCreate() python包

JVM中的Spark实例

使用spark-submit或pyspark启动时,这些脚本将同时处理这两个脚本,即它们设置PYTHONPATH,PATH等,以便您的脚本可以找到pyspark,并且它们也会启动spark实例,根据您的参数进行配置 ,例如 - 大师X.

或者,可以绕过这些脚本并直接在python解释器中运行spark应用程序,如getOrCreate()。 当spark脚本开始变得更复杂并最终获得自己的args时,这尤其有趣。

确保Python解释器可以找到pyspark包。 如前所述,要么将spark / python目录添加到PYTHONPATH,要么使用pip install直接安装pyspark。

从脚本中设置spark实例的参数(那些曾经传递给pyspark的参数)。对于通常使用--conf设置的spark配置,它们在SparkSession.builder.config中使用配置对象(或字符串配置)定义

对于主要选项(如--master或--driver-mem),您可以通过写入PYSPARK_SUBMIT_ARGS环境变量来设置它们。 为了使事情更清洁,更安全,您可以在Python本身内设置它,并且spark将在启动时读取它。

启动实例,只需要从构建器对象调用getOrCreate()。

因此,您的脚本可能具有以下内容:

from pyspark.sql import SparkSession

if __name__ == "__main__":

if spark_main_opts:

# Set main options, e.g. "--master local[4]"

os.environ['PYSPARK_SUBMIT_ARGS'] = spark_main_opts + " pyspark-shell"

# Set spark config

spark = (SparkSession.builder

.config("spark.checkpoint.compress", True)

.config("spark.jars.packages", "graphframes:graphframes:0.5.0-spark2.1-s_2.11")

.getOrCreate())

F Pereira answered 2019-07-27T06:20:07Z

6 votes

要摆脱ImportError: No module named py4j.java_gateway,您需要添加以下行:

import os

import sys

os.environ['SPARK_HOME'] = "D:\python\spark-1.4.1-bin-hadoop2.4"

sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python")

sys.path.append("D:\python\spark-1.4.1-bin-hadoop2.4\python\lib\py4j-0.8.2.1-src.zip")

try:

from pyspark import SparkContext

from pyspark import SparkConf

print ("success")

except ImportError as e:

print ("error importing spark modules", e)

sys.exit(1)

Karang answered 2019-07-27T06:20:34Z

5 votes

在Windows 10上,以下对我有用。 我使用设置>添加了以下环境变量 编辑帐户的环境变量:

SPARK_HOME=C:\Programming\spark-2.0.1-bin-hadoop2.7

PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH%

(将“C:\ Programming \ ...”更改为已安装spark的文件夹)

JustAC0der answered 2019-07-27T06:21:11Z

3 votes

对于Linux用户,以下是在PYTHONPATH中包含pyspark libaray的正确(和非硬编码)方式。 两个PATH部分都是必要的:

pyspark Python模块本身的路径,以及

导入时pyspark模块依赖的压缩库的路径

请注意,压缩库版本是动态确定的,因此我们不对其进行硬编码。

export PYTHONPATH=${SPARK_HOME}/python/:$(echo ${SPARK_HOME}/python/lib/py4j-*-src.zip):${PYTHONPATH}

NYCeyes answered 2019-07-27T06:22:00Z

2 votes

我在CentOS VM上运行一个spark集群,它是从cloudera yum软件包安装的。

不得不设置以下变量来运行pyspark。

export SPARK_HOME=/usr/lib/spark;

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH

sujesh chirackkal answered 2019-07-27T06:22:38Z

2 votes

export PYSPARK_PYTHON=/home/user/anaconda3/bin/python

export PYSPARK_DRIVER_PYTHON=jupyter

export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

这就是我使用Spark的Anaconda发行版所做的。这是Spark版本独立的。您可以将第一行更改为用户的python bin。此外,从Spark 2.2.0开始,PySpark可作为PyPi上的独立包使用但我还没有测试出来。

Yayati Sule answered 2019-07-27T06:23:06Z

2 votes

我有同样的问题。

还要确保使用正确的python版本,并使用正确的pip版本进行安装。 在我的情况下:我有python 2.7和3.x.我安装了pyspark

pip2.7安装pyspark

它工作。

etinika answered 2019-07-27T06:23:54Z

1 votes

我收到此错误是因为我尝试提交的python脚本名为pyspark.py(facepalm)。 解决方法是按照上面的建议设置我的PYTHONPATH,然后将脚本重命名为pyspark_test.py并清理根据我的脚本原始名称创建的pyspark.pyc并清除此错误。

Patrick answered 2019-07-27T06:24:25Z

1 votes

在DSE(DataStax Cassandra& Spark)的情况下需要将以下位置添加到PYTHONPATH

export PYTHONPATH=/usr/share/dse/resources/spark/python:$PYTHONPATH

然后使用dse pyspark获取路径中的模块。

dse pyspark

Sreesankar answered 2019-07-27T06:25:01Z

1 votes

我遇到了同样的问题,并且会对上面提出的解决方案添加一些内容。 在Mac OS X上使用Homebrew安装Spark时,您需要更正py4j路径地址以在路径中包含libexec(记住将py4j版本更改为您拥有的版本);

PYTHONPATH=$SPARK_HOME/libexec/python/lib/py4j-0.9-src.zip:$PYTHONPATH

tjb305 answered 2019-07-27T06:25:28Z

1 votes

您还可以使用Alpine作为操作系统创建Docker容器,并将Python和Pyspark安装为软件包。 这将使它全部集装箱化。

Eddy answered 2019-07-27T06:26:01Z

python使用spark_apache spark - 在python中导入pyspark相关推荐

  1. spark指定python版本_1.Spark学习(Python版本):Spark安装

    Step1: 更新apt sudo apt-get update Step2: 安装SSH.配置SSH无密码登陆 sudo apt-get install openssh-server ssh loc ...

  2. Python脚本可在Microsoft Excel中格式化数据

    In this article, we will use Python scripts for data formatting in Microsoft Excel sheet with variou ...

  3. python sql脚本_使用Python SQL脚本进行数据采样

    python sql脚本 介绍 (Introduction) The Python programming language is object oriented, easy to use and, ...

  4. Foxmail 7.0中导入地址簿

    2019独角兽企业重金招聘Python工程师标准>>> foxmial 7.0中导入地址簿 1.登录foxmail,找到导航栏上的"工具",单击,选择" ...

  5. spark调用python程序包_pycharm编写spark程序,导入pyspark包的3中实现方法

    一种方法: File --> Default Setting --> 选中Project Interpreter中的一个python版本-->点击右边锯齿形图标(设置)-->选 ...

  6. python中导入模块用什么命令_Python导入模块的技巧

    作为使用Python的开发者,我们一开始学习的内容之一就是如何导入Python的各种模块或库.但是我们注意到,那些经常使用Python的用户并不一定都知道Python的导入机制其实非常灵活.在本文中, ...

  7. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  8. 在windows中python安装sit-packages路径位置 在Pycharm中导入opencv不能自动代码补全问题

    一.在windows中python安装sit-packages路径位置 C:\Users\shl\AppData\Local\Programs\Python\Python36\Lib\site-pac ...

  9. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编框架 | PyCharm 中导入 Capstone 反汇编框架 )

    文章目录 一.Capstone 反汇编框架 二.PyCharm 中导入 Capstone 反汇编框架 一.Capstone 反汇编框架 Android 的 APK 安装文件中 , 可能存在若干 so ...

最新文章

  1. Android小知识-电量优化WakeLock的使用
  2. POJ 3617 Best Cow Line 贪心
  3. mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大
  4. 启明云端分享| 继ESP32-S3点屏480*480分辨率的2.1寸屏后,目前在8ms平台又发布了480*480分辨率的4寸屏、480*272分辨率的4.3寸屏、800*480分辨率的4.3寸屏SDK
  5. mysql5.7.17版本介绍_mysql5.7.17版本升级源码方式及恢复主主复制
  6. 鸿蒙系统可以替代安卓吗,华为今天发布的鸿蒙系统,到底能不能替代安卓?
  7. java并发编程-基础
  8. linux中使用gbd进行单布调试
  9. JavaScript学习(六十七)—正则表达式学习总结
  10. python经典题库及答案文库_Python100经典练习题
  11. 网管师职业认证网上辅导班开课前的调查
  12. 算法设计与分析基础 第四章谜题
  13. python压缩视频文件_python压缩图片和视频
  14. 51单片机——LED流水灯
  15. linux查看前50条日志,linux 查看日志信息--less命令
  16. 数学建模之图论最短路径问题
  17. 【已解决】vue报错:Parsing error: No Babel config file detected for...
  18. EXFAT文件系统DBR的完美恢复
  19. 博客专家申请规则变更调整
  20. win10安装SVN失败问题汇总

热门文章

  1. IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期
  2. 交叉编译qt-everywhere-opensource-src-4.6.2需要的几个包
  3. (转)PHP框架大比武
  4. 比特币Cash Hard Fork辩论在压力测试后重新召开
  5. 比特币黄金(BTG)遭受51%双花攻击?——不亏
  6. JAVA开发:开发属于你的第一个Java程序
  7. django使用postgresql时提示主键冲突
  8. Jackson 序列化对象成 JSON 字符串,忽略部分字段(属性)
  9. MySQL:Database connections will be migrated官方说明
  10. S2系统相关-uptime命令总结(S代表系统相关)