【问题标题】:Logic Apps - Get Blob Content Using Path逻辑应用 - 使用路径获取 Blob 内容
【发布时间】:2018-11-08 06:30:54
【问题描述】:

我有一个事件驱动逻辑应用程序(blob 事件),它使用路径读取块 blob 并将内容上传到 Azure Data Lake。我注意到逻辑应用程序失败,读取一个大文件(~6 GB)时出现 413(RequestEntityTooLarge)。我了解逻辑应用的限制为 1024 MB - https://docs.microsoft.com/en-us/connectors/azureblob/,但有什么办法可以解决这种情况吗?我正在研究的替代解决方案是将此步骤移至 Azure Function 并从 blob 中获取内容。感谢您的建议!

【问题讨论】:

  • 您在逻辑应用中使用的是 eventgrid 还是 blob 触发器?
  • 监控新 blob 创建的事件网格。谢谢!

标签: azure azure-data-lake azure-logic-apps azure-blob-storage


【解决方案1】:

如果你想使用 Azure 函数,我建议你看看这篇文章:

您可以将AdlCopy 工具的独立版本部署到您的 Azure 函数中。

因此,您的逻辑应用将调用此函数,该函数将运行命令将文件从 Blob 存储复制到您的数据湖工厂。我建议你使用 powershell 函数。

另一种选择是使用 Azure 数据工厂将文件复制到数据湖:

您可以创建一个从 blob 存储复制文件的作业:

有一个连接器可以触发从逻辑应用运行的数据工厂,因此您可能不需要 azure 功能,但似乎仍然存在一些限制:

【讨论】:

  • 我将研究这些选项,我从 Azure Functions 开始,并注意到在所花费的时间方面存在一些挑战。 (6 GB 文件大约需要 10 多分钟)。感谢分享文章托马斯!欣赏它。
  • 是的,我会避免使用函数,因为函数按 GB/秒计费
【解决方案2】:

您应该考虑使用 Azure 文件连接器:https://docs.microsoft.com/en-us/connectors/azurefile/

它目前处于预览阶段,它比 Blob 的优势在于它没有大小限制。上面的链接包含有关它的更多信息。

【讨论】:

  • 您好 Adam,该设计是事件驱动的,因此逻辑应用会侦听新创建的 blob。我认为 Azure 文件当前不会为任何新文件创建生成事件。感谢您的输入。我编辑了我的问题以明确。
【解决方案3】:

为了其他可能正在寻找此类解决方案的人的利益。 我最终在 C# 中创建了一个 Azure 函数,因为我的设计动态解析 Blob 名称并根据 Blob 名称创建 ADL 结构。我已使用分块内存流来读取 blob 并将其写入 ADL,并使用多线程将 Azure Functions 的时间延长到 10 分钟。

【讨论】:

  • 有没有办法做到这一点?
猜你喜欢
  • 2019-05-09
  • 2019-01-28
  • 2017-09-21
  • 2021-02-18
  • 2021-06-06
  • 2020-05-07
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
相关资源
最近更新 更多