You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF CopyActivity意外递归解压嵌套压缩包,求助保留嵌套压缩包方法

解决ADF解压主Zip时保留嵌套Zip的问题

问题原因

当你在源数据集启用Zip压缩配置时,ADF的CopyData活动会自动解压压缩包内的所有内容,包括识别到的嵌套Zip文件(这可能是ADF对文件扩展名的自动处理逻辑导致的递归解压),即便官方文档说明不支持嵌套解压,实际场景中仍可能因配置或文件结构触发该行为。

解决方案

方案1:取消源数据集压缩配置,用自定义脚本/函数手动解压外层Zip

这种方法能精准控制仅解压外层Zip,保留内部嵌套Zip:

  • 步骤1:将源数据集设为二进制类型、无压缩配置,通过CopyData活动把主Zip文件复制到Blob存储的临时容器。
  • 步骤2:添加自定义活动(或Azure Function活动),调用脚本执行外层解压:
    • PowerShell脚本示例(仅解压外层,内部Zip会以原文件形式保留):
      $sourceZip = "<临时存储的主Zip文件路径>"
      $targetDir = "<目标文件夹路径>"
      Expand-Archive -Path $sourceZip -DestinationPath $targetDir -Force
      
    • Python脚本示例:
      import zipfile
      import os
      
      zip_path = "<临时存储的主Zip文件路径>"
      extract_path = "<目标文件夹路径>"
      
      os.makedirs(extract_path, exist_ok=True)
      with zipfile.ZipFile(zip_path, 'r') as zip_ref:
          zip_ref.extractall(extract_path)
      
  • 步骤3(可选):用CopyData活动将解压后的内容(包含嵌套Zip)复制到最终目标位置。

方案2:调整CopyData活动源配置(尝试规避递归解压)

若不想引入自定义活动,可尝试以下配置调整:

  • 确保源数据集的递归选项设为No,避免ADF遍历解压后的内容。
  • 接收器数据集设为二进制类型、无压缩,目标路径指定为主Zip同名的文件夹。
  • 若调整后仍出现递归解压,建议直接使用方案1,该方案更稳定可控。

关键注意点

  • 源数据集启用Zip压缩时,ADF会自动处理所有压缩格式的文件内容,无法直接跳过嵌套Zip的解压,必须通过手动控制解压逻辑实现需求。
  • 使用自定义脚本/函数时,需确保ADF拥有访问存储资源和执行脚本环境的足够权限。

内容的提问来源于stack exchange,提问作者iggi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:24:53