我想使用单个EMR集群中的spark-submit调用多个spark作业。 EMR支持吗? 如何实现呢? 目前,我使用AWS Lambda为我的Spark作业调用EMR作业,但我们想扩展到单个EMR集群中的多个Spark作业。
答案 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应用程序使用了广泛的配置,与uploadConfFile
和files
可以在本地或在s3 / hdfs中使用不同,配置文件必须在EMR本身的本地文件中。>
完成后,您将在EMR集群上创建一个步骤,它将启动一个新的spark应用程序。您可以在EMR上指定许多步骤,这些步骤将一个接一个地运行。
jars