Azure Data Factory对接REST API及转Parquet最佳方案咨询
在Azure Data Factory中对接REST API的实现方案
一、使用Web Activity获取OAuth授权令牌
以常用的Client Credentials授权模式为例,操作步骤如下:
1. 配置Web Activity请求参数
新建Web Activity,按以下规则配置:- 请求方法:选择
POST - URL:填写OAuth令牌端点(示例:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token) - 请求头:添加
Content-Type: application/x-www-form-urlencoded - 请求体:用表单格式传入授权参数,替换占位符为实际值:
grant_type=client_credentials&client_id={你的客户端ID}&client_secret={你的客户端密钥}&scope={目标API的权限范围}
注意:客户端密钥等敏感信息必须通过Azure Key Vault或ADF的
Secure String类型变量存储,禁止硬编码。- 请求方法:选择
2. 提取并复用令牌
调用成功后,通过动态内容从响应中提取access_token,赋值给Pipeline变量以便后续使用:@activity('WebActivity_GetToken').output.access_token后续调用目标API时,将此令牌放入请求头的
Authorization字段(格式:Bearer {token})即可。
二、将API响应转换为Parquet存储至Blob Storage
方案1:Copy Activity直接完成(适合简单JSON响应)
1. 配置Web源数据集
新建Web类型Dataset,配置:- 链接服务:选择/新建Web链接服务,在请求头中添加
Authorization: Bearer @variables('accessToken') - 请求方法:匹配目标API要求(GET/POST等)
- URL:填写目标API地址,按需添加查询参数
- 链接服务:选择/新建Web链接服务,在请求头中添加
2. 配置Parquet目标数据集
新建Blob Storage类型Dataset,格式选择Parquet,关联你的存储账户链接服务,设置文件路径(可通过动态内容生成带时间戳的文件名,示例:@concat('api-exports/', utcnow('yyyyMMddHHmmss'), '.parquet'))3. 配置Copy Activity
源选择上述Web Dataset,目标选择Parquet Dataset,运行管道即可完成数据提取、转换和存储。
方案2:Data Flow处理复杂响应(需数据清洗/转换场景)
1. 调用API获取响应
用Web Activity调用目标API,确保响应为JSON格式(若为XML,需先通过Web Activity或Copy Activity转换为JSON)2. 配置Data Flow
- 源:选择
Inline类型,输入动态内容@activity('WebActivity_CallAPI').output,将API响应作为数据源 - 转换:按需添加过滤、映射、派生列等转换步骤
- 接收器:选择Blob Storage,格式设为
Parquet,关联对应的存储链接服务和文件路径
- 源:选择
三、关键注意事项
- 分页处理:若API返回分页数据,需用
Until Activity循环调用,每次传入分页参数,直到获取全部数据 - 错误处理:添加
Failure分支或Try-Catch活动,捕获令牌过期、API调用失败等异常 - 性能优化:对于大数据量响应,建议启用Copy Activity的分块读取或Data Flow的分区处理
内容的提问来源于stack exchange,提问作者Zoro4246
相关产品推荐
相关产品推荐

