【问题标题】:Submitting a pyspark job to Amazon EMR cluster from terminal从终端向 Amazon EMR 集群提交 pyspark 作业
【发布时间】:2020-10-07 00:04:07
【问题描述】:

我已经通过 SSH 连接到 Amazon EMR 服务器,我想从终端提交一个用 Python 编写的 Spark 作业(一个简单的字数统计文件和一个 sample.txt 都在 Amazon EMR 服务器上)。我该怎么做?语法是什么?

word_count.py如下:

from pyspark import SparkConf, SparkContext

from operator import add
import sys
## Constants
APP_NAME = " HelloWorld of Big Data"
##OTHER FUNCTIONS/CLASSES

def main(sc,filename):
   textRDD = sc.textFile(filename)
   words = textRDD.flatMap(lambda x: x.split(' ')).map(lambda x: (x, 1))
   wordcount = words.reduceByKey(add).collect()
   for wc in wordcount:
      print (wc[0],wc[1])

if __name__ == "__main__":

   # Configure Spark
   conf = SparkConf().setAppName(APP_NAME)
   conf = conf.setMaster("local[*]")
   sc   = SparkContext(conf=conf)
   sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId","XXXX")
   sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey","YYYY")
   filename = "s3a://bucket_name/sample.txt"
   # filename = sys.argv[1]
   # Execute Main functionality
   main(sc, filename)

【问题讨论】:

  • 检查这个docs.aws.amazon.com/emr/latest/ReleaseGuide/…。这将允许您通过终端提交 python spark 作业 [作为 emr 集群的一个步骤]。否则看看这个,即如何使用 boto3 apis stackoverflow.com/questions/36706512/…
  • 使用 pyspark shell 或 spark-submit
  • @Snigdhajyoti,我知道我必须使用 spark-submit。但是,我对后面的参数感到困惑。
  • 在主节点上只需执行spark-submit --help,您将找到所需的所有参数。如果您想配置 spark 配置,请查看 the docs for configs
  • 好的。另外,假设我想创建一个步骤来提交我的工作。 “添加步骤”选项允许我指定一个要运行的脚本。那么,这是否意味着我需要 1 个步骤来执行 1 个单个 .py 脚本?另外,一个人可以添加多个步骤吗? @Snigdhajyoti

标签: pyspark amazon-emr spark-submit


【解决方案1】:

你可以运行这个命令:

spark-submit s3://your_bucket/your_program.py

如果需要使用python3运行脚本,可以在spark-submit之前运行这个命令:

export PYSPARK_PYTHON=python3.6

记得在 spark-submit 之前将您的程序保存在存储桶中。

【讨论】:

  • 如果不将代码存储在 S3 存储桶中就无法运行代码吗?
  • 另外,如果我想提交 S3 存储桶上的程序,是否必须创建一个步骤?
  • 不,不需要创建步骤。您可以将程序存储在存储桶中,然后在 EMR 终端上运行 spark-submit。我认为这是实现这一目标的更简单方法。
  • 为什么在进行 spark-submit 之前必须将程序放在存储桶中?
  • 您建议的 spark-submit 命令由于某种原因无法正常工作。在 SSH 连接到主节点后,我在终端上使用了该命令。但是,我收到 EmrFileSystem 错误。我要运行的 .py 代码在 S3 存储桶上。
猜你喜欢
  • 2019-05-30
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多