Spark-java多线程与运行单个火花作业

时间:2017-02-02 03:16:22

标签: apache-spark apache-spark-sql apache-spark-2.0

我是Spark的新手,试图了解以下方法中的性能差异(Spark on hadoop)

场景:根据批处理,我有50个hive查询要运行。有些可以并行运行,有些可以顺序运行。

- 第一种方法

所有查询都可以存储在hive表中,我可以编写Spark驱动程序一次读取所有查询并使用java多线程并行运行所有查询(使用HiveContext)

  • 专业人士:易于维护
  • 缺点:所有资源都可能被占用 对于每个查询,性能调整都很困难。

- 第二种方法

使用oozie spark操作运行每个查询个人

  • 专业人士:优化可以在查询级别完成
  • 缺点:难以维持。

我找不到任何关于Spark如何在第一种方法内部处理查询的第一种方法的文档。从性能的角度来看哪种方法更好?

我可以找到Spark多线程的唯一内容是:  “在每个Spark应用程序中,多个”作业“(Spark动作)可能会同时运行,如果它们是由不同的线程提交的”

提前致谢

1 个答案:

答案 0 :(得分:0)

由于您的要求是与条件

并行运行配置单元查询
  

有些可以运行并行和一些顺序

这种工作流程最好由DAG处理器处理, Apache Oozie 。这种方法比您通过代码管理查询更清晰,即您将构建自己的DAG处理器,而不是使用oozie提供的处理器。