Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将多个spark作业提交到单个AWS EMR群集_Java_Apache Spark_Spark Streaming_Amazon Emr - Fatal编程技术网

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

Java 如何将多个spark作业提交到单个AWS EMR群集,java,apache-spark,spark-streaming,amazon-emr,Java,Apache Spark,Spark Streaming,Amazon Emr,我试图向EMR集群提交多个作业,但我只看到第一个作业处于运行状态,其余作业都处于接受状态。我的大部分工作都是流媒体工作 我有以下疑问: 如何实现这些作业的并行运行 自动化这些作业以供将来部署的各种方法有哪些 如何处理计划作业(例如每15分钟运行一次的作业) 我正在使用Java进行开发。任何输入都会非常有用。如果EMR中的多个步骤互不依赖,那么您可以使用EMR中名为并发性的功能来解决您的用例。此功能只是意味着您一次可以并行运行多个步骤 此功能来自EMR版本5.28.0。如果您使用的是比此版本旧的版

我试图向EMR集群提交多个作业,但我只看到第一个作业处于运行状态,其余作业都处于接受状态。我的大部分工作都是流媒体工作

我有以下疑问:

  • 如何实现这些作业的并行运行
  • 自动化这些作业以供将来部署的各种方法有哪些
  • 如何处理计划作业(例如每15分钟运行一次的作业)

  • 我正在使用Java进行开发。任何输入都会非常有用。

    如果EMR中的多个步骤互不依赖,那么您可以使用EMR中名为
    并发性的功能来解决您的用例。此功能只是意味着您一次可以并行运行多个步骤

    此功能来自EMR版本5.28.0。如果您使用的是比此版本旧的版本,则无法使用此功能

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

    如果您是从AWS CLI启动EMR,则此功能称为“StepConcurrencyLevel”

    您可以在和上阅读更多关于此的信息

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

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


    因此,每次触发规则时,它都会执行lambda函数。你的lambda函数反过来会产生EMR。通过这种方式,您可以安排作业。

    您的意思是生成多个EMR集群吗?不清楚的。如果是这样,那么Step并发级别肯定更好?@BluePhantom这取决于用例,如果您想在很长一段时间后安排作业,比如说每12小时一次,并且作业本身在1小时内运行,那么我希望每12小时安排一次,而不是让EMR长时间闲置。但是如果调度频率非常低,比如说每15分钟一次,并且作业完成时间也比较短,那么我会选择在已经创建的EMR中添加步骤,并使用
    步骤并发的概念。据我从问题中了解,他想自动化它,所以建议使用lambda方法生成多个EMR。好的,明白了,但我的意思是并发。只是检查一下。谢谢。