考虑如下数据处理管道:
- 从托管在 Internet 上某处的 REST API 获取大量数据并将其保存到数据存储中。
- 对持久化数据执行一些复杂的数据转换。
- 将数据转换的结果保存在数据存储上。
为了在 Azure 中实施这样的管道,步骤 2 和 3 似乎非常适合作为Azure 数据工厂活动实施。
我的问题是 - 在 Azure 数据工厂活动中实施步骤 1 是否也有意义?
从技术上讲,可能可以编写一个 .Net 活动来执行数据下载和持久性。
考虑如下数据处理管道:
为了在 Azure 中实施这样的管道,步骤 2 和 3 似乎非常适合作为Azure 数据工厂活动实施。
我的问题是 - 在 Azure 数据工厂活动中实施步骤 1 是否也有意义?
从技术上讲,可能可以编写一个 .Net 活动来执行数据下载和持久性。
否 - 不要在 Azure 数据工厂活动中实施步骤 1。
从技术上讲,可以从 ADF 运行整个过程,但我认为该选择比您可用的其他选项更昂贵(相对),因为您将为Azure 数据工厂中的每项活动付费。
例如,如果当您启动(计划的)活动时,其余 api 没有任何新数据要提供怎么办?你会为此付出代价的。
您可能会认为以下是一种易于实施的替代方案: 1 - 创建一个 .NET 控制台应用程序,作为 WebJob 发布,安排每天运行。2 - 长时间运行的控制台应用程序可以查询其余 api,将数据持久化到 azure storage/documentdb,将消息推送到队列中,从而触发 ADF 步骤 2/3 以针对保存的数据运行。
我已经使用 .Net Activity 做到了这一点。我需要从 Salesforce api 获取数据。这一直很好地满足我的需求。 这是我写的一篇关于创建 .net 活动并将数据存储在 azure 数据湖中的帖子。
正如 Newport99 的回答是,您将为此活动产生成本,但我不确定运行单独的 Web 应用程序来托管 Web 作业并运行 Azure 数据工厂管道的成本效益如何。当我最初设计一个解决方案时,WebJob 是我的第一选择,但最终我更喜欢让整个解决方案使用一个 azure 服务而不是多个。
希望有帮助。
自从发布此问题以来,ADF 已有很多改进,包括 REST 连接器。这是 ADF 目前推荐的方法...