我的工作团队目前正在寻找一种相当昂贵的ETL工具的替代品,在这一点上,我们正在使用它作为一个美化的调度程序。我们使用自己的python代码改进了ETL工具提供的任何集成,所以我真的需要它的调度能力。我们正在研究的一个选项是Data Pipeline,我目前正在试用它。
我的问题是:想象我们有两个数据集要加载 - 产品和销售。每个数据集都需要加载许多步骤(获取源数据,调用python脚本进行转换,加载到Redshift)。但是,产品需要在 销售之前加载,因为我们需要产品成本等来计算保证金。是否有可能拥有一个" master"数据管道中的管道,它首先调用产品,等待它成功完成,然后调用销售?如果是这样,怎么样?如果数据管道不适合这种类型的工作流程,我也可以接受其他产品建议。感谢帮助
答案 0 :(得分:1)
我想我可以与这个用例有关。不管怎么说,Data Pipeline都不会自己做这种依赖管理。然而,它可以使用文件前置条件进行模拟。
在此示例中,您的子管道可能在启动之前依赖于存在的文件(作为前提条件)。主管道将根据其活动中执行的某些逻辑创建触发器文件。子管道可能会创建其他触发器文件,这些文件将启动下游的后续管道。
另一种解决方案是使用Simple Workflow product。这具有您正在寻找的功能 - 但需要使用Flow SDK进行自定义编码。
答案 1 :(得分:1)
这是datapipeline的基本用例,绝对可以。您可以使用其图形管道编辑器来创建此管道。打破问题:
有两个数据集:
加载这些数据集的步骤:
您需要为需要使用的每个数据集添加上述组件(在本例中为产品和销售)。为便于管理,您可以在EC2 Instance上运行这些内容。
条件:'产品'需要在“销售”运行之前加载
提示:在大多数情况下,您不希望在前一天执行仍处于活动状态(即运行)时启动第二天执行。要避免出现这种情况,请使用“ maxActiveInstances ”字段并将其设置为“1”。