当前位置: 首页 > 知识库问答 >
问题:

如何并行运行多个Spark作业?

司马辉
2023-03-14

一个spark有一个oracle查询。所以我必须并行运行多个作业,以便所有查询都将同时激发。

如何并行运行多个作业?

共有1个答案

栾钟展
2023-03-14

引用关于作业调度的正式文件:

其次,在每个Spark应用程序中,如果多个“作业”(Spark操作)是由不同的线程提交的,那么它们可能会同时运行。

换句话说,单个sparkcontext实例可以由多个线程使用,从而提供了提交多个并行运行的Spark作业的能力。

把事情弄清楚一点。

>

  • spark-submit是提交Spark应用程序以供执行(而不是Spark作业)。单个Spark应用程序至少可以有一个Spark作业。

    RDD操作可能阻塞,也可能不阻塞。sparkcontext提供了两种提交(或运行)Spark作业的方法,即sparkcontext.runjobsparkcontext.submitjob,因此操作是否阻塞并不重要,重要的是使用什么sparkcontext方法来实现非阻塞行为。

    请注意,“RDD操作方法”已经编写好了,并且它们的实现使用了Spark开发人员所下注的任何东西(主要是sparkcontext.runjob,如在count中):

    // RDD.count
    def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum
    

    您必须编写自己的RDD操作(在自定义RDD上),才能在Spark应用程序中具有所需的非阻塞特性。

  •  类似资料:
    • 我在BatchScheduler中有多个计划作业,它在特定时间运行。简单的内置JobLauncher,这是同步的。在自然界中最初使用。现在,我想并行运行这些作业,这样没有作业可以等待其他作业完成。 我在不同的作业上尝试过@Async注释,但都不起作用。 然后,我尝试设置joblauncher.settaskexecutor(新的SimpleAsyncTaskExecutor())。但这并不奏效。

    • 问题内容: 作业系统:Cent-OS 我有一些作业(或脚本)要运行。每个工作需要3-5分钟。我有。我可以并行使用。请建议一些脚本或工具通过并行运行40个Jobs来处理30,000个Job。 我做了什么: 我创建了40个不同的文件夹,并通过为每个目录创建一个Shell脚本来并行执行作业。 我想知道下一次处理此类工作的更好方法。 问题答案: 正如Mark Setchell所说:GNU并行。 如果您坚持

    • 问题内容: 在我的我有这两个脚本: 每当我开始在Node.js中开发时,我必须 并行 运行这两个脚本。我想到的第一件事是添加第三个脚本,如下所示: …但这将等待完成再运行。 如何并行运行它们? 请记住,我需要查看以下命令。另外,如果您的解决方案涉及构建工具,则我宁愿使用,因为我已经在另一个项目中使用了它。 问题答案: 使用并发调用的包。 然后按以下步骤设置您的任务:

    • 在我的中有以下两个脚本: 每次在Node.js中开始开发时,我都必须并行运行这两个脚本。我首先想到的是添加第三个这样的脚本: ...但在运行之前,将等待完成。 我如何并行运行这些?请记住,我需要查看这些命令的。另外,如果您的解决方案涉及构建工具,我宁愿使用而不是,因为我已经在另一个项目中使用了它。

    • -第一种方法 所有的查询都可以存储在一个配置单元表中,我可以编写一个Spark驱动程序来一次读取所有查询,并使用java多线程并行运行所有查询(与HiveContext一起 优点:易于维护 缺点:可能会占用所有资源,并且对每个查询进行性能优化可能会很困难。 使用oozie spark操作单独运行每个查询 优点:可以在查询级别进行优化 缺点:难以维护。 我找不到任何关于第一种方法的文档,说明Spar

    • 我正在亚马逊的EMR集群上同时运行3个Spark流进程。问题是这三个Spark流作业中的一个基于进行处理: 有没有办法在不更改代码的情况下解决这个问题?