【发布时间】: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