使用 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_PYTHON
和 PYSPARK_DRIVER_PYTHON_OPTS
。
【参考方案1】:
PYSPARK_DRIVER_PYTHON
和 PYSPARK_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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
使用经 EMRFS S3 优化的提交器提高 Apache Spark 写入 Apache Parquet 格式文件的性能
《Apache Spark源码剖析》学习笔记之Spark作业提交