如何安装 pyspark 以在独立脚本中使用?
Posted
技术标签:
【中文标题】如何安装 pyspark 以在独立脚本中使用?【英文标题】:How do I install pyspark for use in standalone scripts? 【发布时间】:2014-08-08 13:59:14 【问题描述】:我正在尝试将 Spark 与 Python 一起使用。我从downloads 页面安装了 Spark 1.0.2 for Hadoop 2 二进制分发版。我可以在 Python 交互模式下运行快速入门示例,但现在我想编写一个使用 Spark 的独立 Python 脚本。 quick start documentation 说只导入 pyspark
,但这不起作用,因为它不在我的 PYTHONPATH 上。
我可以运行bin/pyspark
并看到模块安装在SPARK_DIR/python/pyspark
下。我可以手动将其添加到我的 PYTHONPATH 环境变量中,但我想知道首选的自动化方法。
为独立脚本添加pyspark
支持的最佳方式是什么?我在 Spark 安装目录下的任何地方都看不到 setup.py
。如何为依赖 Spark 的 Python 脚本创建 pip 包?
【问题讨论】:
pyspark 可执行文件是否运行?然后从那里,您可以查询 pyspark 包所在的位置,并确保在您的 PYTHONPATH 中包含适当的路径以用于独立模块。 好点。我修改了问题。 我认为,由于安装整个 Spark 生态系统非常复杂,我会尽量设置 PYTHONPATH。在任何情况下,您都将使用 spark-submit 执行脚本 - 您对此有什么问题吗? 哦,我明白了。所以我不编写独立的 Spark Python 脚本。我使用 pyspark 依赖项编写 Python 脚本,然后将其提交到 Spark 集群。我没有从快速开始的文章中明白这一点,但我想这是有道理的。 Hadoop 的工作方式相同。如果这是正确的,您应该将其作为答案提交,@mdurant。谢谢。 请先尝试一下 :) 【参考方案1】:Spark-2.2.0 及更高版本使用 pip install pyspark
在您的机器上安装 pyspark。
对于旧版本,请参阅以下步骤。在 bashrc 中的 Python 路径中添加 Pyspark 库
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
也不要忘记设置 SPARK_HOME。 PySpark 依赖于 py4j Python 包。所以安装如下
pip install py4j
有关独立 PySpark 应用程序的更多详细信息,请参阅post
【讨论】:
你的回复是好的,但是补充一下你需要在你的机器上下载完整的 Spark 会很有用。你可能认为这是显而易见的,但对于初学者(比如我)来说不是 请参考本期SPARK-1267 @ssoto Spark-2.2.0 以后你可以使用pip install pyspark
。
pip 自动安装 py4j
作为 pyspark
的依赖项。
作为先决条件,请确保首先安装 Java 8(如所述,例如 webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html 或 webupd8.org/2012/09/… )【参考方案2】:
我安装 pyspark 以在 guide 之后独立使用。步骤是:
export SPARK_HOME="/opt/spark"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
然后你需要安装py4j:
pip install py4j
尝试一下:
./bin/spark-submit --master local[8] <python_file.py>
【讨论】:
我很确定它是PYTHONPATH
而不是 PYTHON_PATH
安装py4j
的那一步很有帮助。【参考方案3】:
从 Spark 2.2 开始,PySpark 现已在 PyPI 中可用。谢谢@Evan_Zamir。
pip install pyspark
从 Spark 2.1 开始,您只需下载 Spark 并运行 setup.py:
cd my-spark-2.1-directory/python/
python setup.py install # or pip install -e .
还有一个ticket 用于将其添加到 PyPI。
【讨论】:
现在有了 Spark 2.2,您只需pip install pyspark
。 :)【参考方案4】:
您可以按照您的建议手动设置 PYTHONPATH,这可能对您在本地安装上测试独立的非交互式脚本很有用。
但是,(py)spark 就是将您的作业分配到集群上的节点。每个集群都有一个配置,定义了一个管理器和许多参数;设置的详细信息是here,包括一个简单的本地集群(这可能对测试功能有用)。
在生产中,您将通过 spark-submit 将任务提交给 spark,这会将您的代码分发到集群节点,并为它们在这些节点上运行建立上下文。但是,您确实需要确保节点上的 python 安装具有所有必需的依赖项(推荐的方式),或者依赖项与您的代码一起传递(我不知道它是如何工作的)。
【讨论】:
请看看这是否符合您的经验 - 我不确定这是否可以理解。【参考方案5】:不要export $SPARK_HOME
,要export SPARK_HOME
。
【讨论】:
以上是关于如何安装 pyspark 以在独立脚本中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 oozie 4.2.0 上运行火花动作(pyspark 脚本)?
如何添加第三方 Java JAR 文件以在 PySpark 中使用
如何使方法 JSON 可序列化以在自定义 Pyspark 转换器中使用
AWS 设置以在 Apache pyspark env 上运行 python 脚本