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