我的团队目前正在寻找一个替代一个相当昂贵的ETL工具,目前,我们正在使用它作为一个光荣的调度器。我们使用自己的python代码改进了ETL工具提供的任何集成,所以我确实需要它的调度能力。我们正在考虑的一种选择是数据管道,我目前正在试用该管道。
因此,我的问题是:假设我们有两个数据集来加载产品和销售。每个数据集都需要许多步骤来加载(获取源数据,调用python脚本进行转换,加载到Redshift)。然而,在销售运行之前,产品需要加载,因为我们需要产品成本等来计算利润率。是否有可能在数据管道中有一个“主”管道,先调用产品,等待其成功完成,然后调用销售?如果是这样的话,是怎么做的?如果数据管道不太适合这种类型的工作流,我也愿意接受其他产品建议。感谢你的帮助
发布于 2015-04-15 09:53:10
我想我可以和这个用例联系起来。无论如何,数据管道本身不做这种依赖管理。但是,可以使用文件先决条件来模拟它。
在本例中,您的子管道可能依赖于启动前存在的文件(作为先决条件)。主管道将根据其活动中执行的某些逻辑创建触发器文件。子管道可能会创建其他触发文件,从而启动后续管道下游。
另一个解决方案是使用简单工作流产品。这具有您正在寻找的特性--但是需要使用Flow SDK进行自定义编码。
发布于 2015-04-17 19:20:48
这是datapipeline的一个基本用例,应该是可能的。您可以使用他们的图形管道编辑器来创建这个管道。解决问题:
有两个数据集:
加载这些数据集的步骤
您需要为您需要处理的每个数据集添加上述组件(在本例中为产品和销售)。为了便于管理,您可以在EC2实例上运行这些。
条件:在“销售”运行之前,需要加载“产品”
提示:在大多数情况下,您不希望在前一天的执行仍然处于活动状态(也就是正在运行)时开始第二天的执行。要避免这种情况,请使用'maxActiveInstances‘字段并将其设置为“1”。
https://stackoverflow.com/questions/29638483
复制相似问题