使用 Apache Spark 提交 Python 应用程序

Posted

技术标签:

【中文标题】使用 Apache Spark 提交 Python 应用程序【英文标题】:Submitting Python Application with Apache Spark Submit 【发布时间】:2016-09-03 00:15:08 【问题描述】:

我正在尝试遵循 Apache Spark 文档站点上的示例:https://spark.apache.org/docs/2.0.0-preview/submitting-applications.html

我启动了一个 Spark 独立集群并希望运行示例 Python 应用程序。我在我的 spark-2.0.0-bin-hadoop2.7 目录中并运行了以下命令

./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000

但是,我得到了错误

jupyter: '/Users/MyName/spark-2.0.0-bin- \
hadoop2.7/examples/src/main/python/pi.py' is not a Jupyter command

这就是我的 bash_profile 的样子

#setting path for Spark
export SPARK_PATH=~/spark-2.0.0-bin-hadoop2.7
export PYSPARK_DRIVER_PYTHON="jupyter"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
alias snotebook='$SPARK_PATH/bin/pyspark --master local[2]'

我做错了什么?

【问题讨论】:

在提交之前取消设置 PYSPARK_DRIVER_PYTHONPYSPARK_DRIVER_PYTHON_OPTS 【参考方案1】:

PYSPARK_DRIVER_PYTHONPYSPARK_DRIVER_PYTHON_OPTS 用于在打开 pyspark shell 时运行 ipython/jupyter shell(更多信息请参见How to load IPython shell with PySpark)。

你可以这样设置:

alias snotebook='PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS=notebook $SPARK_PATH/bin/pyspark --master local[2]'

这样提交时不会干扰pyspark

【讨论】:

【参考方案2】:

在 spark-submit 命令前添加PYSPARK_DRIVER_PYTHON=ipython

例子:

PYSPARK_DRIVER_PYTHON=ipython ./bin/spark-submit \ 
/home/SimpleApp.py

【讨论】:

不错。唯一的问题是如果我想将参数传递给 python 脚本。出于某种原因,Ipython 正在干预,认为他们是为了它。

以上是关于使用 Apache Spark 提交 Python 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Apache spark - JDBC 写入,中间提交

无法将 Apache Spark 应用程序提交到容器化集群

使用经 EMRFS S3 优化的提交器提高 Apache Spark 写入 Apache Parquet 格式文件的性能

《Apache Spark源码剖析》学习笔记之Spark作业提交

Apache Spark s3a 提交者 - 线程堆栈 - 内存不足问题

Apache Spark:CentOS7下的提交和执行一个官方的jar项目包