You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory如何将Azure Function返回的JSON作为参数传递给Databricks?

可行实现方案

你考虑的在Databricks中通过Python直接调用Azure Function的方案是完全合理的,也是优先推荐的实现方式,全程不需要生成中间二进制JSON文件,符合你的需求。下面是几个可选的落地方案,可根据数据量和触发逻辑选择:

方案1:Databricks Python直接调用Azure Function(优先推荐)

适合按需跑批、单批次返回JSON体积≤1GB的场景,实现成本最低。
实现要点:

  • 提前将Azure Function的调用URL、访问密钥存入Databricks机密scope,避免硬编码敏感信息
  • 直接用Python的requests库发起接口调用,拿到返回结果后直接转成Spark DataFrame做清洗即可,示例代码如下:
import requests
import pandas as pd

# 从Databricks机密库读取敏感信息
func_url = dbutils.secrets.get(scope="自定义的机密scope名称", key="azure-func-url")
func_access_key = dbutils.secrets.get(scope="自定义的机密scope名称", key="azure-func-access-key")

headers = {"x-functions-key": func_access_key}
response = requests.get(func_url, headers=headers)
# 接口调用失败直接抛出异常终止流程
response.raise_for_status()
json_data = response.json()

# 直接转为Spark DataFrame做后续清洗,无需存储中间文件
df = spark.createDataFrame(pd.json_normalize(json_data))
  • 如果单批次JSON体积超过1GB,可以让Azure Function返回分块流式响应,Databricks侧按流接收即可,避免占满单节点内存。

方案2:Azure Function触发Databricks作业传递数据

适合事件触发的流水线场景,比如外部API有新数据时自动触发全流程,无需人工启动Databricks作业。
实现逻辑:

  • Azure Function拉取到API返回的JSON数据后,直接调用Databricks作业的REST API,将JSON数据作为作业的入参传递
  • Databricks作业启动后直接读取传入的JSON参数完成后续清洗入库,全程无中间文件。

方案3:Azure Event Hubs做中间缓冲(高吞吐场景适用)

适合API拉取频率高、单批次数据量大的高吞吐场景,稳定性更强。
实现逻辑:

  • Azure Function拉取到JSON数据后直接写入Azure Event Hubs的指定Topic
  • Databricks开启结构化流任务直接消费Event Hubs中的数据,实时完成清洗入库,同样不需要生成中间JSON文件。

注意:如果单次拉取的JSON体积超过2GB,不建议直接通过HTTP响应或者作业参数传递,这类场景建议临时存到Azure Blob存储配置了自动生命周期删除的容器中,Databricks读完后自动删除临时文件,成本几乎可以忽略,稳定性比大对象直接传输高很多。

内容的提问来源于stack exchange,提问作者ananasekPolsaek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:24:04