如何通过REST API向Azure Data Factory管道推送数据作为源?
实现客户端API推送数据至ADF并即时写入Blob的方案
方案1:直接调用ADF管道触发API传递数据
适合低并发、单次数据推送的场景,步骤如下:
- 在ADF里创建管道,定义一个字符串类型的管道参数(比如
inputData),用来接收客户端传递的数据 - 创建内联数据集作为复制活动的源,选择匹配数据格式的类型(如JSON/CSV),在数据集的连接设置中,将源内容设为管道参数
@pipeline().parameters.inputData - 配置复制活动的目标为Blob存储数据集,指定容器和文件路径(可通过动态内容生成文件名,比如
@concat('data-', utcNow(), '.json')) - 客户端调用ADF的触发管道REST API,请求示例:
注意:结构化数据需先序列化为字符串再传入参数POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}/createRun?api-version=2018-06-01 Headers: Authorization: Bearer {accessToken} Content-Type: application/json Body: { "parameters": { "inputData": "{\"key1\":\"value1\",\"key2\":\"value2\"}" } } - 管道触发后立即执行,将参数中的数据写入Blob存储
方案2:通过Azure Event Hub中转(高并发场景首选)
如果客户端有高频数据推送需求,用Event Hub做缓冲更稳定可靠:
- 创建Azure Event Hub实例,客户端直接将数据推送到Event Hub的指定主题
- 在ADF中创建事件触发的管道,触发类型选择
Event Hub,配置好Event Hub的连接信息,设置触发阈值(比如每条事件触发一次,或累计N条触发) - 在管道中添加复制活动,源选择Event Hub数据集,目标选择Blob存储数据集
- 客户端向Event Hub发送数据后,ADF会自动触发管道,即时将数据写入Blob存储
方案3:用ADF Web活动接收数据
这种方式让ADF直接暴露接收请求的端点,适合需要ADF主动接收数据的场景:
- 在ADF管道中添加Web活动,设置为「接收请求」模式,配置POST方法和预期的数据格式
- 将Web活动的输出作为后续复制活动的源,写入Blob存储
- 客户端直接调用Web活动的暴露端点传递数据,管道会即时执行写入操作
内容的提问来源于stack exchange,提问作者Prasad.CH
相关产品推荐
相关产品推荐

