我需要你建议我们建立在火花上的系统。我们的用例如下。
所以这似乎是一个DAG(直接非循环图),我们需要处理规则成为要处理的初始节点,然后组合必须以某种顺序执行的步骤。
现在的问题是,我应该考虑像Oozie这样的工作流程管理系统作为处理这个DAG的技术选择吗?对于例如在Oozie中,所有单独的规则将成为独立的“操作”,并且组合步骤将依赖于应该在业务规则操作之后运行的“操作”。如果我遵循这个,我的系统将在几个独立的子组件中解耦; all将在Oozie xml文件中配置。 这听起来很迷人,但我不太相信上述方法。 “我的”理由是 - 1.每个层都必须创建独立的SparkContext,单个spark上下文不能跨所有步骤共享。 Spark本身就是处理DAG。在这之上使用Oozie将是一个过度杀戮。 3. Oozie应该用于我们需要为不同组件构建工作流的用例。对于例如我想调用spark应用程序,然后是一些shell脚本,然后是Pig脚本,依此类推。
如果我不使用像Oozie这样的工作流程管理系统,我需要在我的应用程序中编写一个小框架,它按顺序组合这些规则。当然,如果我需要并行运行规则,在未来的行动中,我需要修改我的这个小框架。
所以我的问题是 - 1.我不使用Oozie的原因是否正确? 2.如果不是Oozie,还有另一个框架适合我的用例吗? 3.编写我的小框架来处理这个工作流程实际上是在重新发明轮子吗?