如何将多个Spark作业提交到单个AWS EMR集群

时间:2020-07-18 21:43:35

标签: java apache-spark spark-streaming amazon-emr

我正在尝试将多个作业提交给EMR群集,但是我只看到第一个作业处于运行状态,其余的全部都处于“接受”状态。我的大部分工作都是流作业。

我有以下查询:

  1. 我如何才能同时完成这些工作?
  2. 自动执行这些作业以供将来部署的各种方式是什么?
  3. 我如何处理预定的工作(例如每15分钟运行一次的工作)?

我正在使用Java进行开发。任何输入都会真正有帮助。

1 个答案:

答案 0 :(得分:3)

如果EMR中的多个步骤不相互依赖,则可以使用EMR中称为Concurrency的功能来解决您的用例。此功能仅意味着您一次可以并行运行多个步骤。

EMR版本 5.28.0 中具有此功能。如果您使用的版本比此版本旧,则无法使用此功能。

从AWS控制台启动EMR时,此功能在用户界面中称为“并发” 。您可以选择1到256之间的任何数字。

如果要从AWS CLI启动EMR,则此功能称为'StepConcurrencyLevel'

您可以在multiple steps now in EMR AWS CLI details

了解更多信息

要回答关于我如何处理计划作业的第二个问题?

有多种方法可以做到这一点。我能想到的一种简单化方法是编写一个生成此EMR的 lambda函数。现在,可以在AWS cloudwatch中安排该lambda函数以所需的任何频率运行(例如每15分钟或任何时间间隔)。您只需要提及一个 Cron表达式,它将决定该规则的触发频率。

因此,每次触发规则时,它将执行lambda函数。然后,您的lambda函数将生成EMR。通过这种方式,您可以安排工作。