如何在 AWS EMR 中一起添加 2 个(pyspark、scala)步骤?

Posted

技术标签:

【中文标题】如何在 AWS EMR 中一起添加 2 个(pyspark、scala)步骤?【英文标题】:How can I add 2 (pyspark,scala) steps together in AWS EMR? 【发布时间】:2021-05-18 18:09:54 【问题描述】:

我想在 AWS EMR 集群中一起添加两个步骤。 第 1 步是基于 pyspark 的代码,第 2 步是基于 Scala-spark 的代码。

我如何做到这一点?

【问题讨论】:

【参考方案1】:

只要您的步骤逻辑正确(输入/输出符合您的逻辑),运行一个步骤并不依赖于上一步使用的语言。

例如,您的第一步(我假设集群正在运行)是使用 python,这可能类似于从 mysql/S3 获取数据并执行 ETC 并保存到 S3(此处通知 /home/hadoop/spark/myscript.py

 aws emr add-steps --cluster-id j-xxxxxxx 
--steps Name=Spark,Jar=s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,
 Args=[/home/hadoop/spark/bin/spark-submit,
--deploy-mode,client,/home/hadoop/spark/myscript.py],
 ActionOnFailure=CONTINUE

你的下一步可以是任何东西,包括 scala。例如(此处通知/usr/lib/spark/examples/jars/spark-examples.jar

aws emr add-steps --cluster-id j-2AXXXXXXGAPLF
--steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,
 Args=[
 --class,org.apache.spark.examples.SparkPi,
 /usr/lib/spark/examples/jars/spark-examples.jar,10]

现在考虑以下提交两个步骤的命令,(注意 TYPE 之前的黑步)

注意:步骤名称为CustomJAR,CustomJAR2

aws emr add-steps 
--cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://mybucket/mytest.jar,Args=arg1,arg2,arg3 Type=CUSTOM_JAR,Name=CustomJAR2,ActionOnFailure=CONTINUE,Jar=s3://mybucket/mytest.jar,MainClass=mymainclass,Args=arg1,arg2,arg3

您现在只需将 python 和 scala 步骤放在适当的位置。

【讨论】:

以上是关于如何在 AWS EMR 中一起添加 2 个(pyspark、scala)步骤?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark aws emr 中向现有数据框添加多列?

如何使用 Step Function 在 Amazon EMR 中添加步骤

AWS EMR 4.0 - 如何添加自定义 JAR 步骤来运行 shell 命令

将 Delta Lake 包添加到 AWS EMR Notebook

我们可以将 AWS Glue 视为 EMR 的替代品吗?

带有 cloudformation 的 AWS EMR 集群:如何启用调试