使用 Azure 数据工厂将压缩的 XML 文件从 HTTP 链接源复制并提取到 Azure Blob 存储

问题描述

我正在尝试建立 Azure 数据工厂复制数据管道。源是一个开放的 HTTP 链接源(网址参考:https://clinicaltrials.gov/AllPublicXML.zip)。所以基本上源包含一个包含许多 XML 文件的压缩文件夹。我想使用 Azure 数据工厂将提取的 XML 文件解压缩并保存在 Azure Blob 存储中。我试图遵循这里提到的配置:How to decompress a zip file in Azure Data Factory v2 但我收到以下错误

ErrorCode=UserErrorSourceNotSeekable,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Your HttpServer source can't support random read which is requied by current copy activity setting,please create two copy activities to work around it: the first copy activity binary copy your HttpServer source to a staging file store(like Azure Blob,Azure Data Lake,File,etc.),second copy activity copy from the staged file store to your destination with current settings.,Source=Microsoft.DataTransfer.ClientLibrary,'

不完全确定出了什么问题,但如果有人可以指导我完成该过程,那将非常有帮助。

解决方法

我将其分解为两个复制数据活动,以便将下载 zip 文件(非常大)和解包分开。您可以尝试一步完成,但我认为您会遇到超时问题。使用我的方法,您还可以获得原始 zip 文件的副本,这将有利于审计跟踪和调试目的。

我尝试以方框和线条格式记录我的 ADF 模式,其中显示了每个组件的关键细节。所以这里有两个复制活动,以及支持的链接服务和数据集 - 尝试按照此操作,让我知道您的进展情况:

ADF pattern

注意,ADF 解压缩 .xml 文件需要很长时间,因为它们相当多。我在 Azure 存储资源管理器中显示的结果:

Results