逻辑应用程序 - 使用路径获取 Blob 内容

Logic Apps - Get Blob Content Using Path

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

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

它目前处于预览阶段,它相对于 Blob 的优势在于它没有大小限制。以上link包含更多相关信息。

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

AdlCopy 工具有一个独立版本,您可以将其部署到您的 Azure 功能。

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

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

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

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

  • Trigger Azure Data Factory Pipeline from Logic App w/ Parameter

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