使用 ADF 将文件夹从具有 2 级子文件夹的 azure 容器移动到与子文件夹同名的容器级
Posted
技术标签:
【中文标题】使用 ADF 将文件夹从具有 2 级子文件夹的 azure 容器移动到与子文件夹同名的容器级【英文标题】:Move folders from azure containers which is having 2 levels of sub-folders to container level with the same name as the sub folder using ADF 【发布时间】:2021-12-24 12:22:45 【问题描述】:有一个 blob 存储帐户,该 blob 存储帐户的名称是 azureblob11
它有一个名称为 source
的容器。
容器 source
包含 2 级子文件夹。
文件夹结构类似:
source (container)
|--a (folder)
|--ana (sub-folder)
|--hem (sub-folder)
|--thg (sub-folder)
|--oud (sub-folder)
我想要实现的目标是将所有子文件夹 (ana, hem, thg, oud
) 连同它们的数据一起复制到容器级别,并将这 4 个子文件夹连同其中的数据一起创建为新容器。
预期目标如下所示:
source (container)
|--a (folder)
|--ana (sub-folder)
|--hem (sub-folder)
|--thg (sub-folder)
|--oud (sub-folder)
ana (container)
hem (container)
thg (container)
oud (container)
为了实现这个目标,我在 ADF 中使用了copy data
管道。
选择了来源。
选择源数据集
-> 选择新建
-> 选择类型为Azure blob storage
-> 选择格式为binary
-> 选择链接服务为movecontainer
选择了水槽
-> 选择新建
-> 选择类型为Azure blob storage
-> 选择格式为binary
我被困在如何配置参数或创建容器的动态内容上。
【问题讨论】:
【参考方案1】:使用Get Metadata
活动获取子文件夹 名称列表并将其传递给ForEach
活动以将文件夹复制到接收器,如下所示。
Azure 数据湖中的源结构:
ADF 管道:
使用Get Metadata
活动,获取文件夹“a”和容器“source”下的子文件夹名称列表。
• 在数据集属性的字段列表下选择子项。
• 获取元数据的输出:
-
将此输出传递给
ForEach
活动。
• 在 items 属性下,添加 Get Metadata 输出子项。
-
在
ForEach
活动中添加Copy data
活动。
• 创建源数据集并参数化源数据集中的子文件夹(目录)路径,如下所示。
• 在copy data
活动中,将当前 ForEach 项目名称传递给源属性中的数据集参数值。
• 创建接收器数据集并在接收器数据集中参数化接收器容器路径。
• 在Copy activity
sink 数据集中,将当前的 ForEach 项目名称传递给 sink 参数。
-
每个子文件夹中的子文件夹和文件被复制到接收器。如果不存在,它创建具有当前项目名称的 接收器容器。
【讨论】:
以上是关于使用 ADF 将文件夹从具有 2 级子文件夹的 azure 容器移动到与子文件夹同名的容器级的主要内容,如果未能解决你的问题,请参考以下文章