【问题标题】:How to run multiple spark jobs in parallel with same spark context?如何在相同的火花上下文中并行运行多个火花作业?
【发布时间】:2015-08-26 20:14:42
【问题描述】:

有没有办法在不同线程中使用相同的 spark 上下文并行运行多个 spark 作业?

我尝试使用 Vertx 3,但看起来每个作业都在排队并按顺序启动。

如何让它在相同的 spark 上下文中同时运行?

这是我的示例代码:

 vertx.executeBlocking(future -> {
        DataFrame dataframe = sqlContext.sql(sql);

        Row[] result = dataframe.collect();
        System.out.println("Query result for " + sql);
        LOG.info("Query result for " + sql);

        if (result == null) {               
            LOG.info("No result!");
        } else {
            for (Row row : result) {                    
                LOG.info(":::" + row.toString());
            }
        }           
        future.complete(true);
    }, res -> {
        if (res.succeeded()){
            LOG.info("Query finished");
        }else{
            LOG.info("Query failed " + res.cause().getMessage());
            res.cause().printStackTrace();              
        }
    });

【问题讨论】:

  • 我不熟悉 Vertx,我会简单地使用 Scala 期货,但除此之外它看起来是一种合理的方法。我的猜测是每个作业都占用了集群上的所有资源。您是否尝试过减少分区数量?
  • 是的,未来它们将被安排在异步模式下,但它们会竞争资源。如果您只需要执行 sql 查询,您可以尝试多用户的 thrift 服务器
  • @zero323 是的,你说得对,自从我在独立集群上运行以来,每个作业都会占用我集群上的所有资源。我可能会在 Yarn 上设置我的 Spark 集群,我的工作可能会有更好的资源调度。
  • @axlpado-AgileLab:我从未尝试过节俭服务器,只是检查了文档,它提到了Thrift JDBC/ODBC server。我想知道它是否可以在没有 JDBC 的情况下工作,因为我没有连接到数据库。会去看看
  • @AdetiloyePhilipKehinde:我有和你类似的问题。在 Yarn 或 Meso 上使用集群能否获得更好的结果?

标签: apache-spark spark-streaming apache-spark-sql vert.x


【解决方案1】:

使用AsyncRDDActions 怎么样?我刚刚测试并运行了两个collectAsync,确实是并行运行的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多