2017-05-25 67 views
3

我有一个具有多个管道的数据工厂,每个管道都有大约20个复制活动,以在两个存储帐户之间复制azure表。如何链接Azure数据工厂管道

每个管道处理每个天蓝色表的快照,因此我想按顺序运行管道,以避免用旧数据覆盖最新数据的风险。

我知道给第一个管道输出作为第二个管道的输入,我们可以实现这一点。但是,由于我有许多活动正在筹备中,我不确定哪些活动最后会完成。

是否有反正我可以知道管道已完成或反正一个管道完成状态触发下一个管道?

在Activity中,inputs是一个数组。那么是否有可能提供多个输入?如果是的话,所有输入将异步运行或一个接一个运行?

在多个输入的情况下,我已阅读有关调度依赖关系。那么外部输入可以作为调度依赖性还是只有内部数据集?

回答

2

我认为目前你有两个选择来处理这个问题。两者都不是很理想,但ADF没有任何理想的现在形式!所以......

选项1

强制执行时间片延迟偏移第二管道活动。如果不重新分配切片并且可以将其添加到活动中,则更容易更改延迟。这不会是事件驱动的,但会给你更多的控制,以避免重叠。

"policy": { 
    "timeout": "1.00:00:00", 
    "delay": "02:00:00", // <<<< 2 hour delay 
    "concurrency": 1, 

检查此页面上的这两个属性的详细信息以及在何处使用它们:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-scheduling-and-execution

选项在PowerShell 2

休息和使用的东西,在更高的层次上进行控制。

例如,使用Get-Azure Rm数据工厂活动窗口检查第一个管道状态。然后,如果完全使用Set-AzureRmDataFactorySliceStatus将第二个管道数据集更新为就绪。

OR

在与ADF PowerShell的中止反应天青室数据工厂管道

更多信息管道级别执行此cmdlet的位置:https://docs.microsoft.com/en-gb/powershell/module/azurerm.datafactories/Suspend-AzureRmDataFactoryPipeline?view=azurermps-4.0.0

正如我说的,这两个选项都不是最理想的,你已经在你的问题中提到了数据集链接。

希望这会有所帮助。

0

管道在该管道的所有输出数据集处于状态就绪状态(管道成功完成时发生)后完成。此外,管道可以将来自多个管道的多个数据集作为输入(输出也是)。在这种情况下,只有在所有先前的管道成功完成后,管道才会启动。如果你有更多的管道数据集作为输入,它们将异步运行,这取决于他们的进度。

外部数据集(输入)充当调度依赖性,因为它们可以有自己的(可能不同)可用性。

在多个输入的情况下,我已阅读有关调度依赖关系。那么外部输入可以作为调度依赖性还是只有内部数据集?

相关问题