【发布时间】: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