1

我对 Azure 相当陌生,我手头有一项任务,即使用任何 Azure 服务(或为此集成在一起的一组 azure 服务)从第三方 Rest API 端点并行下载一百万个文件,即一次返回一个文件,使用 Azure 数据工厂到 Blob 存储?

我研究了什么:

根据我的研究,我的任务简而言之有三个要求:

  • 以百万计并行运行 - 为此,我推断 Azure Batch 将是一个不错的选择,因为它允许在 VM 上并行运行大量任务(它将该概念用于图形渲染过程或机器学习任务)
  • 将来自 Rest API 的响应保存到 Blob 存储:我发现 Azure 数据工厂能够从 Source/Sink 样式处理此类 ETL 类型的操作,我可以将 REST API 设置为源,将目标设置为 blob。

我尝试过的:

以下是一些需要注意的事项:

  • 我将 REST API 和 Blob 添加为链接服务。
  • API 端点接受一个名为:fileName的查询字符串参数
  • 我正在使用查询字符串传递整个 URL
  • Rest API 受 Bearer Token 保护,我正在尝试使用其他标头传递它。

主要问题:

  • 我在发布管道时收到一条错误消息,该模型不合适,只是那一行,它没有提供任何信息

其他查询:

  • 可以从 sql 表中动态传递查询字符串值,以便每个文件名可以从存储过程/内联查询的单列数据行中选择一个单行/列项?
  • 是否可以以某种方式使用 Azure Batch 使该管道并行运行?我们如何整合这个过程?
  • 仅使用 Batch 是否可以在没有数据工厂的情况下实现百万并行?
4

1 回答 1

0

很难帮助您解决主要问题 - 您需要提供更多代码示例

关于您的其他查询:

  • 您可以使用“查找活动”从数据库中获取文件列表(使用存储过程或内联查询)。下一步将是一个 ForEach 活动,它遍历数组并将文件从 REST 端点复制到存储帐户。您可以调整 ForEach 活动的并行度以满足您的要求,但您通常会看到大约 20 个并发执行。

  • 使用 Azure Batch 来下载文件似乎有点矫枉过正,因为它应该是一个相当快速的操作。如果您想查看用 C# 编写的 Azure Batch 作业示例,我可以推荐这个示例 => `https://github.com/Azure-Samples/batch-dotnet-quickstart/blob/master/BatchDotnetQuickstart。在并行性方面,我认为与 Azure 数据工厂相比,您将设法在 Azure Batch 上获得更高的程度。

  • 在您实际需要并行下载 1M 文件时,我认为除了 Azure Batch 之外,您没有其他选择来接近这些数字。但是,如果它可以在一两秒内处理 1M 的请求,那么大多数 API 都会非常强大。

于 2020-07-28T20:30:17.897 回答