如何通过SFTP将CSV文件从Microsoft Data Factory湖仓环境传输至外部服务器?
从Azure Data Factory湖仓通过SFTP传输CSV文件的实操步骤
1. 先配置两个核心链接服务(Linked Services)
1.1 湖仓源链接服务(以ADLS Gen2为例,湖仓场景常用)
- 打开ADF Studio,左侧导航点「管理」→「链接服务」→「+ 新建」
- 搜索「Azure Data Lake Storage Gen2」,点「继续」
- 选配置方式:
- 账户密钥模式:填存储账户名称、账户密钥,点击「测试连接」确认连通
- 托管标识模式(更安全):先给ADF的托管标识添加存储账户的「存储Blob数据读取者」权限,再填写存储账户名称,测试连接
1.2 SFTP目标链接服务
- 同样在链接服务页面,新建服务,搜索「SFTP」,点「继续」
- 填写SFTP服务器地址、端口(默认22),选择认证方式:
- 密码认证:直接输入用户名、密码
- SSH密钥认证:上传私钥文件,有密钥密码则补充填写
- 点击「测试连接」,确保能正常访问外部SFTP服务器
2. 创建对应数据集(Datasets)
2.1 湖仓侧CSV源数据集
- 左侧导航点「数据」→「数据集」→「+ 新建」
- 选择「Azure Data Lake Storage Gen2」→「CSV」,点「继续」
- 关联之前创建的ADLS Gen2链接服务,选择CSV文件所在的容器、文件夹路径,配置文件格式(分隔符、编码、是否包含表头等)
2.2 SFTP侧目标数据集
- 新建数据集,选择「SFTP」→「CSV」,点「继续」
- 关联SFTP链接服务,设置目标文件夹路径(比如
/target/csv_files/),格式配置与源数据集保持一致即可
3. 搭建数据传输管道
- 左侧导航点「管道」→「+ 新建管道」
- 在左侧活动面板搜索「复制数据」,拖拽到画布上
- 配置复制活动:
- 源标签:选择湖仓CSV数据集,批量传输可设置文件名筛选为
*.csv,勾选「递归」读取子文件夹内容 - 接收器标签:选择SFTP数据集,文件名可保留原名称,或用动态内容
@concat(pipeline().RunId, '.csv')生成唯一文件名避免覆盖 - 设置标签:根据文件大小调整并行复制数(大文件适当调高提升效率),配置错误处理规则(比如跳过损坏文件)
- 源标签:选择湖仓CSV数据集,批量传输可设置文件名筛选为
4. 测试与调度
- 点击画布上方的「调试」按钮,运行管道,通过监控面板查看执行日志,确认文件传输成功
- 如需定时执行,点击「添加触发器」→「新建/编辑」,设置调度规则(比如每日凌晨2点运行)
关键注意事项
- 权限校验:确保ADF托管标识拥有湖仓存储的读取权限;若为公网SFTP,需将ADF的出站IP加入服务器白名单,或部署自托管集成运行时访问内部SFTP
- 大文件优化:GB级CSV文件开启「分块复制」,调整并行数避免传输超时
- 动态路径配置:需按日期分区传输时,可在数据集路径中使用
@formatDateTime(utcNow(), 'yyyy/MM/dd')自动生成日期文件夹
内容的提问来源于stack exchange,提问作者Luciano Carvajal
相关产品推荐
相关产品推荐

