技术问询:如何在Azure Data Factory中从Parquet源复制数据到Delta目标
在Azure Data Factory中实现Parquet到Delta Lake的数据复制操作
一、前置准备
确保你已具备以下资源和权限:
- 可用的Azure Data Factory(ADF)实例
- 存储Parquet文件的数据源(Azure Blob Storage/ADLS Gen2,ADLS需开启分层命名空间)
- 用于存储Delta Lake的目标存储(必须是ADLS Gen2,Delta依赖分层命名空间特性)
- ADF服务主体(或托管标识)拥有:
- 源存储的
Storage Blob Data Reader权限 - 目标存储的
Storage Blob Data Contributor权限
- 源存储的
二、配置Parquet数据源
- 进入ADF Studio,切换到管理面板,选择链接服务 > 新建
- 搜索并选择对应存储类型(如
Azure Data Lake Storage Gen2或Azure Blob Storage),点击继续 - 配置链接服务参数:
- 选择账户认证方式(密钥/服务主体/托管标识)
- 输入存储账户名,完成认证后点击测试连接,确认成功后保存
- 切换到数据面板,选择数据集 > 新建
- 搜索并选择
Parquet数据集类型,点击继续 - 关联已创建的存储链接服务,配置文件路径:
- 指定容器、文件夹路径
- 文件名可使用通配符(如
*.parquet)匹配所有Parquet文件 - 若Parquet按分区存储,可在架构选项卡中导入分区列,或启用从文件夹路径导入分区
三、配置Delta Lake目标
- 在链接服务中新建指向目标ADLS Gen2的链接服务(步骤同Parquet数据源的链接服务配置)
- 切换到数据面板,新建数据集,搜索并选择
Delta Lake类型,点击继续 - 关联目标ADLS Gen2链接服务,配置Delta表参数:
- 指定Delta表的根路径(如
delta/target_sales_table) - 可选:设置表名(用于后续查询标识)
- 在设置选项卡中选择更新模式:
Append:追加新数据到现有Delta表Overwrite:覆盖整张Delta表的数据Upsert:基于指定键列更新或插入数据(需后续配置键列)
- 指定Delta表的根路径(如
四、创建并配置复制活动
- 切换到创作面板,新建管道,将复制活动拖拽到画布中
- 配置复制活动的源端:
- 选择之前创建的Parquet数据集
- 在源设置中:
- 勾选递归以读取子文件夹中的Parquet文件(如果需要)
- 若需增量复制,可配置增量复制选项,基于文件最后修改时间或水印列筛选数据
- 配置复制活动的目标端:
- 选择之前创建的Delta Lake数据集
- 根据需求选择更新模式:
- 若选
Upsert,需在目标设置中指定键列(用于匹配更新记录) - 可选:启用优化相关设置(如Optimize、Z-Order,但ADF中需配合后续Spark活动完成,复制活动仅负责数据写入)
- 若选
- (可选)在设置选项卡中调整并行度,提升大文件复制的性能
五、运行与验证
- 点击全部发布,将配置发布到ADF服务
- 点击触发 > 触发现在,启动管道运行
- 切换到监控面板,查看管道和复制活动的运行状态,确认无报错
- 验证Delta Lake数据:
- 使用Azure Databricks连接到目标ADLS Gen2,执行
SELECT * FROM delta.路径``查询数据 - 或通过Azure Storage Explorer查看目标路径下的
_delta_log文件夹(Delta事务日志)和数据文件
- 使用Azure Databricks连接到目标ADLS Gen2,执行
注意事项
- Delta Lake仅支持ADLS Gen2(或Databricks DBFS)作为存储,普通Blob Storage无法使用
- 若Parquet包含复杂数据类型(数组、结构体),Delta Lake可直接兼容,无需额外转换
- 增量复制场景下,建议使用水印列(如
last_updated_time)而非文件修改时间,确保数据一致性 - 大批量数据写入后,可添加一个Spark活动执行
OPTIMIZE和ZORDER BY命令优化Delta表性能
内容的提问来源于stack exchange,提问作者Venkat Mettela
相关产品推荐
相关产品推荐

