如何安装 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 脚本

如何创建 Web 前端以在后台访问 Postgres 数据库?

没有 spark-submit 的 Exec pyspark 独立脚本