如何在Azure Data Factory中解压.7z格式文件?
在Azure Data Factory中解压.7z格式文件的方案
ADF原生确实不支持.7z格式的解压,你可以通过以下几种方式实现需求:
方法1:借助Azure Function处理
- 先用ADF的复制活动将网络位置的.7z文件下载到Blob存储指定容器。
- 创建Azure Function(推荐用Python或C#):
- 引入支持7z解压的库:Python用
py7zr,C#用SevenZipSharp。 - 编写函数逻辑:读取Blob存储中的.7z文件,解压后将文件写入目标Blob容器。
- 引入支持7z解压的库:Python用
- 在ADF中添加Azure Function活动,配置函数的触发参数(如源Blob路径、目标Blob路径),完成解压流程的串联。
方法2:结合Azure Batch批量处理
- 确保.7z文件已存入Blob存储。
- 在Azure Batch中创建池,池中的节点提前安装7z工具(可通过启动任务自动安装)。
- 在ADF中添加Azure Batch活动,指定Batch作业的命令行(例如
7z x https://<存储账户>.blob.core.windows.net/<容器>/file.7z -ohttps://<存储账户>.blob.core.windows.net/<输出容器>/,或挂载Blob后用本地路径执行),触发批量解压任务。
方法3:使用自托管集成运行时(Self-hosted IR)执行命令行
- 部署自托管IR到一台本地或虚拟机,在该机器上安装7z工具,并确保IR服务账户有7z的执行权限。
- 在ADF中创建自定义活动,选择自托管IR作为运行环境,配置命令行任务:
也可以结合AzCopy命令,先将Blob中的.7z文件下载到IR本地临时目录,解压后再上传回目标Blob容器。7z x "<源Blob挂载路径或通过AzCopy下载到本地的文件路径>" -o"<解压后文件的输出路径(可挂载到目标Blob)>"
内容的提问来源于stack exchange,提问作者Rogowiak
相关产品推荐
相关产品推荐

