使用Azure Data Factory实现存储容器到文件系统的批量数据复制
解决方案
一、拆分列表生成批量复制活动
用ADF的ForEach活动循环处理Databricks输出的映射列表,自动生成对应复制任务:
- 在ADF管道中添加ForEach活动,将迭代项设置为:
(如果需要并行执行复制任务,可取消勾选“Sequential”;若需按顺序执行则保持勾选)@activity('你的Databricks笔记本活动名称').output.runOutput - 在ForEach活动内部添加复制活动,分别配置源和目标:
- 源数据集(Azure Blob Storage):将容器名称的动态内容设置为
@item()[0],直接取当前迭代项的第一个元素(容器名) - 目标数据集(文件系统):将文件夹路径的动态内容设置为处理后的目标路径(参考第二部分的路径处理方法)
- 源数据集(Azure Blob Storage):将容器名称的动态内容设置为
二、去除路径中的额外反斜杠
利用ADF的表达式函数replace处理转义后的双反斜杠:
将目标路径的动态表达式写为:
@replace(item()[1], '\\\\', '\\')
原理:Python输出的路径中\\\\是转义后的双反斜杠,在ADF表达式里,用\\\\代表实际的两个反斜杠,替换为\\(代表实际的一个反斜杠),最终得到符合要求的\\Filesystem-root\FOLDER1格式路径。
如果需要统一目标路径的大小写(比如和原始CSV一致),还可以配合toLower或toUpper函数:
@replace(toLower(item()[1]), '\\\\', '\\')
内容的提问来源于stack exchange,提问作者Pysparker
相关产品推荐
相关产品推荐

