使用像oozie这样的工作流程管理系统来处理火花系统子组件

时间:2016-08-09 04:11:40

标签: apache-spark oozie spark-dataframe

我需要你建议我们建立在火花上的系统。我们的用例如下。

  1. 我们需要计算四个独立的业务规则。
  2. 每个业务规则都包括从多个表读取以及连接和聚合它们以及生成一个输出表等操作。
  3. 每个业务规则的中间输出结果我们需要相互组合并产生最终输出。例如,我们需要结合say rule1和rule2结果,然后是rule3和rule4,然后将它们的结果组合成最终输出。我们将这些步骤称为组合步骤。
  4. 所以这似乎是一个DAG(直接非循环图),我们需要处理规则成为要处理的初始节点,然后组合必须以某种顺序执行的步骤。

    现在的问题是,我应该考虑像Oozie这样的工作流程管理系统作为处理这个DAG的技术选择吗?对于例如在Oozie中,所有单独的规则将成为独立的“操作”,并且组合步骤将依赖于应该在业务规则操作之后运行的“操作”。如果我遵循这个,我的系统将在几个独立的子组件中解耦; all将在Oozie xml文件中配置。 这听起来很迷人,但我不太相信上述方法。 “我的”理由是 - 1.每个层都必须创建独立的SparkContext,单个spark上下文不能跨所有步骤共享。 Spark本身就是处理DAG。在这之上使用Oozie将是一个过度杀戮。 3. Oozie应该用于我们需要为不同组件构建工作流的用例。对于例如我想调用spark应用程序,然后是一些shell脚本,然后是Pig脚本,依此类推。

    如果我不使用像Oozie这样的工作流程管理系统,我需要在我的应用程序中编写一个小框架,它按顺序组合这些规则。当然,如果我需要并行运行规则,在未来的行动中,我需要修改我的这个小框架。

    所以我的问题是 - 1.我不使用Oozie的原因是否正确? 2.如果不是Oozie,还有另一个框架适合我的用例吗? 3.编写我的小框架来处理这个工作流程实际上是在重新发明轮子吗?

0 个答案:

没有答案