如何在Amazon EMR上运行PySpark作业(使用自定义模块)?

时间:2015-04-04 14:23:58

标签: python amazon-ec2 apache-spark emr pyspark

我想运行一个在我的(本地)机器上运行良好的PySpark程序。

我运行了一个Amazon Elastic Map Reduce集群,并安装了所有必需的依赖项(来自PyPI的Spark,Python模块)。

现在,如何运行使用某些自定义模块的PySpark作业?我已经尝试了很多事情,也许是半天,现在,无济于事。我到目前为止找到的最好的命令是:

/home/hadoop/spark/bin/spark-submit --master yarn-cluster \
    --py-files s3://bucket/custom_module.py s3://bucket/pyspark_program.py 

但是,Python失败了,因为它找不到custom_module.py。它似乎试图复制它,但是:

  

INFO yarn.Client:上传资源s3://bucket/custom_module.py - >   HDFS:// ...:9000 /用户/ hadoop的/ .sparkStaging / application_ ... _0001 / custom_module.py

     

INFO s3n.S3NativeFileSystem:正在打开   ' S3://bucket/custom_module.py'阅读

这看起来像是一个非常基本的问题,但网络上的内容相当沉默,包括官方文档(Spark文档似乎暗示了上面的命令)。

1 个答案:

答案 0 :(得分:0)

这是bug of Spark 1.3.0

解决方法包括为YARN定义SPARK_HOME,即使这不是必需的:

spark-submit … --conf spark.yarn.appMasterEnv.SPARK_HOME=/home/hadoop/spark \
               --conf spark.executorEnv.SPARK_HOME=/home/hadoop/spark …