Azure数据工厂与工厂

时间:2018-01-11 02:21:52

标签: azure azure-data-factory

我目前正在使用数据工厂构建一个Azure数据湖,并且在获得有关多个数据工厂与一个数据工厂的建议之后。

我目前有一个数据工厂,即从一个EBS实例获取数据,用于企业下的一个特定公司。在未来,虽然可能有其他EBS实例和其他公司(与其他应用程序作为来源)合并到工厂 - 我认为图表可能会有点混乱。

我一直在搜索,我发现这个网站建议将所有内容保存在单个数据工厂中以重用链接服务。我想这是一件好事,但是因为我已经为一个数据工厂编写了构建脚本,所以再次构建链接服务以指向相同的数据湖是非常容易的。

https://www.purplefrogsystems.com/paul/2017/08/chaining-azure-data-factory-activities-and-datasets/

只有一个数据工厂实例的优点:

  • 必须只创建数据集,链接服务一次
  • 可以在一个图表中看到整体血统

缺点

  • 随着时间的推移会变得混乱
  • 甚至可以找到你追求的管道

是否有人在那里进行了大量的Azure数据工厂部署,这可能会带来数千个数据源,将它们混合在一起并进行转换?有兴趣听听你的想法。

5 个答案:

答案 0 :(得分:2)

我的建议是只有一个,因为它可以更容易地配置多个集成运行时(网关)。如果您决定拥有多个数据工厂,请考虑到pc只能安装1个集成运行时,并且集成运行时只能注册到1个数据工厂实例。

我认为您列出的缺点都是通过命名规则来修复的。如果您将它们命名为:Pipeline_ [数据库名称] [db schema] [表名],那么找到您想要的管道并不麻烦。

我有一个包含数千个数据集和管道的项目,并且它比小项目更难处理。

希望这有帮助!

答案 1 :(得分:1)

我最初同意集成运行时被绑定到单个数据工厂是一个限制,但我怀疑它不再或很快不再是限制。

March 13th update to AzureRm.DataFactories中,有一条评论说明“允许在数据工厂之间共享集成运行时”。

我认为这将取决于数据工厂的复杂性以及各种来源和目的地之间是否存在相互依赖关系。

特别是UI(在V2中更是如此)使得管理大型数据工厂变得容易。

但是如果选择ARM部署技术,即使是一个非常复杂的数据工厂,数据工厂JSON也很快会变得难以处理。从这个意义上说,我建议拆分它们。

当然,您可以通过将ARM模板分解为嵌套部署,ARM参数化或数据工厂V2参数化,使用SDK直接使用单独的文件来缓解可维护性问题。或者甚至只使用UI(现在使用git支持:-))

也许更重要的是,特别是当你提到来自不同的公司时;它可能听起来像数据不相关,如果不是 - 应该它被隔离,以避免任何编码错误?或者甚至可能为数据工厂分配角色和职责。

另一方面,如果数据是相互关联的,那么将它放在一个数据工厂中可以让数据工厂更容易管理数据依赖并一次性重新运行失败的切片。

答案 2 :(得分:1)

我的建议是为每个项目创建一个DataFactory服务。如果需要将数据从两个源传输到一个目标,并且每次转换都需要多个管道和链接服务以及其他内容,则建议为每个源创建两个单独的ADF服务。在这种情况下,我将把每个源看作一个单独的集成项目。

enter image description here

对于每个项目,您还将有两个单独的CI / CD。

enter image description here

在源控制器中,您还需要有两个单独的存储库。

enter image description here

答案 3 :(得分:0)

如果您使用的是ADF v1,那么它会变得混乱。在我们的客户,我们在一个数据工厂中有超过1000个管道。如果你刚刚开始,我建议你看看v2,因为它允许你参数化,并且应该让你的脚本更可重用。

答案 4 :(得分:0)

3月发行版之后,您可以在不同工厂之间链接集成运行时。

另一件事是为各种管道和数据集创建不同的文件夹