Apache spark EMR:无法并行运行步骤

Apache spark EMR:无法并行运行步骤,apache-spark,yarn,emr,Apache Spark,Yarn,Emr,我正在尝试并行运行几个EMR步骤。 我在网上看到了关于这个问题的其他问题,以及谷歌的选项。 所以我尝试过的事情: 使用队列集配置CapacityScheduler 配置FairScheduler 尝试使用AWS数据管道进行并行公平调度、并行容量调度 这对我不起作用,所有队列都正确地创建了纱线,提交是在不同的队列上完成的。但EMR仍然一次只运行一个步骤(一个步骤运行其余的步骤) 我还从其中一个答案中看到,步骤应该是顺序的,但您可以在一个步骤中放置多个作业。我并没有找到一种方法来做到这一点,根据

我正在尝试并行运行几个EMR步骤。 我在网上看到了关于这个问题的其他问题,以及谷歌的选项。 所以我尝试过的事情:

  • 使用队列集配置CapacityScheduler
  • 配置FairScheduler
  • 尝试使用AWS数据管道进行并行公平调度、并行容量调度
这对我不起作用,所有队列都正确地创建了纱线,提交是在不同的队列上完成的。但EMR仍然一次只运行一个步骤(一个步骤运行其余的步骤)

我还从其中一个答案中看到,步骤应该是顺序的,但您可以在一个步骤中放置多个作业。我并没有找到一种方法来做到这一点,根据用户界面,这是没有选择的

我并没有试图直接将作业提交给纱线集群,我想从AWSAPI提交作业,但我还没有找到从API提交作业的方法

这是我对CapacityScheduler的配置


这是配置的步骤

可能会迟到,但希望这会有所帮助

Spark提供了一个选项,指定调用方(步骤)在提交后是否等待Spark应用程序完成。您可以将该值设置为
false
,然后AWS emr步骤将提交并立即返回

spark.warn.submit.waitAppCompletion:“false”


不幸的是,这是不可能的。它不是设计成那种开箱即用的。您可以使用AWS Step函数以无服务器方式执行此操作。您可以在AWS Step函数中创建整个工作流,并通过ApacheLivy与AmazonEMR上的Spark交互(每个示例)。选择的范围很广,但您在任何情况下都需要某种协调器(Oozie,Airflow,Livy不是协调器,但当与步骤函数一起使用时,它可能会起到作用)。这意味着,我要结束这个问题,因为答案很广。@eliasah谢谢,据我所知,如果需要并行执行,EMR步骤是无用的,使用EMR的唯一方法是引导spark cluster并使用通过spark提供API的工具,或者直接使用Thread cluster?嗯,无用是一个大词。每个示例都可以使用Oozie添加一个运行并行spark作业的步骤。@eliasah我们最终启动了一个脚本作为emr步骤,并在该脚本中执行所有并行工作。它没有提供太多关于失败或工作状态的信息,但它对我们有用