在单个EMR集群中调用多个Spark作业

时间:2019-03-31 04:46:41

标签: apache-spark aws-lambda amazon-emr

我想使用单个EMR集群中的spark-submit调用多个spark作业。 EMR支持吗? 如何实现呢? 目前,我使用AWS Lambda为我的Spark作业调用EMR作业,但我们想扩展到单个EMR集群中的多个Spark作业。

1 个答案:

答案 0 :(得分:0)

您可以在一个EMR上顺序运行多个Spark作业-也就是说,下一个作业将在上一个作业完成后启动。这是通过 EMR步骤完成的。

我使用Java SDK来运行它,但是您可以在本文档how to add step using CLI only中看到。

我下面的代码使用spark-submit,但是它不能像在CLI中那样直接运行。相反,我将其作为shell脚本运行,并为HADOOP_USER_NAME包含了一个环境变量,因此spark作业在我指定的用户名下运行。如果要使用登录到EMR的用户名(默认为 hadoop )运行作业,则可以跳过该操作。

在对象Style.Numberformat.Format下面的代码摘录中,SDK中提供了emr类型的对象。如果您使用CLI方法,则不需要它。

诸如AmazonElasticMapReduce之类的一些辅助方法是不言自明的。我为spark应用程序使用了广泛的配置,与uploadConfFilefiles可以在本地或在s3 / hdfs中使用不同,配置文件必须在EMR本身的本地文件中。

完成后,您将在EMR集群上创建一个步骤,它将启动一个新的spark应用程序。您可以在EMR上指定许多步骤,这些步骤将一个接一个地运行。

jars