如何利用ADF(Azure Data Factory)完成CDP任务流

CDP任务流配置

ADF(Azure Data Factory)是 Azure 云平台上的数据集成与工作流编排工具,核心功能是帮你把分散在不同地方的数据、任务串成自动化流程,不用写大量代码就能实现 "数据搬运 + 任务调度 + 依赖管理"。

用大白话讲,ADF 就像一个 "数据任务总指挥",主要干这几件事:

  1. 数据搬运:跨源数据同步 / 转换
    跨系统搬数据:能把数据从数据库(MySQL/SQL Server)、存储(Blob/S3)、API、大数据平台(HDFS/Databricks)等几十种源,搬到目标存储 / 数据库里(比如从 MySQL 同步到 Data Lake)。
    数据清洗 / 转换:支持用 "数据工厂管道" 做简单清洗(比如字段映射、格式转换),也能调用 Databricks/Spark 做复杂计算。
  2. 任务编排:串起所有任务的执行顺序
    依赖管理:像你现在做的 ------ 让 "数据清洗最后一个 Job"→"后端任务"→"大数据任务" 按顺序执行,用 "活动依赖"(蓝色箭头)就能可视化配置。
    循环 / 分支逻辑:支持 Until(循环查状态)、If Condition(满足条件才执行某任务)等逻辑,不用写代码实现复杂流程。
  3. 调度与监控
    定时触发:可以设置 "每天凌晨 2 点自动跑整个流程",不用手动启动。
    运行监控:能看每个任务的执行状态(成功 / 失败)、耗时、日志,失败了还能自动重试 / 发告警。
  4. 无缝对接 Azure 生态
    直接调用 Databricks Job、Azure Function、Synapse Analytics 等服务,不用额外写集成代码。
    简单说:ADF 是 "无代码 / 低代码" 的工具,帮你把数据相关的 "搬运、清洗、任务执行" 打包成自动化流水线,不用自己搭调度系统(比如 Airflow),直接用云服务搞定。

CDP 打标签圈人群任务依赖于后端抽取每天的新数据到datalake,后端抽取数据的任务依赖于ETL Job。这个时候我们就可以利用ADF能做任务变拍的特点来处理这个调度。

ETL 有很多job,已经配置完自身的任务流,但是这个任务流太长,为了将CDP任务与ETL任务隔离,我就将CDP任务配置做成了一个新的任务流。后端服务器上有脚本检测ETL任务完成后在执行后端的任务,后端任务之行完毕后往数据库的表中加入一条数据
步骤一: 建立ADF

登录 Azure 门户,搜索栏搜索Data factory,选择create后设置Resource group(资源组)、Name(ADF 名称)、Region(区域)。注意Name需要唯一,Region需要跟调度的job在同一个区域



步骤二:配置pipelines

登录https:adf.azure.com , 选择刚才创建的ADF,选择Pipelines 创建管道

**步骤三:利用Unit和lookup **

Unit中添加LookUp (后端任务执行完毕后,往postgre sql 数据库中表A写入一行数据,数据时间为当天pt,故此处采用LookUp查询数据是否存在)

配置LookUp。LookUp中要查询表中数据,股需要配置相应的Linkservice 。

Lookup中用到的Linkservice 配置:

Linkservice 配置结束后再配置Unit中LookUp

选择table 或者手动输入后再点击OK。接着配置查询语句

步骤四:加上databricks job 完成任务流配置

将job拖到画布中,然后针对job配置Azure Databricks 和 Job

选中Job和Unit,将Unit蓝色小箭头跟Job连接起即可。
步骤五:验证和发布 点击画布上方的 "Validate" 按钮,验证 Pipeline 配置是否有错误;验证通过后,点击 "Publish all" 保存所有配置。任务发布后需要配置触发条件

更优方案:

将后端任务也加入ADF。鉴于我现在用的ADF是旧版,没有SSH,故只能通过web轻量服务来调用后端的脚本。
步骤 1:在后端服务器部署轻量 API(以 Python Flask 为例)

安装Flask

powershell 复制代码
pip install flask

后端服务器上新建script_api.py:

python 复制代码
from flask import Flask
import subprocess

app = Flask(__name__)

# 定义接口:调用你的脚本
@app.route('/job_combine.sh', methods=['GET'])
def run_script():
    # 替换为你的脚本路径
    script_path = "/home/cdp/job_combine.sh"
    # 执行脚本(异步执行,避免ADF超时)
    subprocess.Popen(["sh", script_path])
    return "Script started successfully", 200

if __name__ == '__main__':
    # 开放端口(确保服务器防火墙允许8080端口)
    app.run(host='0.0.0.0', port=8080)

后端启动脚本

powershell 复制代码
nohup python3 script_api.py &

步骤 2:在 ADF 中配置 Web 活动

URL:填写后端服务器的 API 地址(比如http://后端服务器IP:8080/job_combine);

Method:选择 "GET"

将之前的Unit任务删除,将web跟cdp 其他job 连接起来即可。如果cdp job 也要接受可变传参,那么也可用web方式来处理。

如果Job中也需要可变参数,则需要在 Databricks Job 的Parameters中,把可变传参改成占位符(比如先写成"--date", "PLACEHOLDER_DATE")

然后在ADF的pipeline的job 的setting中设置动态传参

相关推荐
无敌糖果3 天前
Azure OpenAI配置Codex对接模型apikey
openai·azure·codex
Arman_4 天前
Rust 客户端安全上传下载微软 Azure Blob:rusty-cat SAS 预签名实战
安全·microsoft·rust·azure·断点续传
Arman_4 天前
Rust 接入微软 Azure Blob 文件上传下载:rusty-cat 直连模式实战
microsoft·rust·azure·断点续传
编码者卢布6 天前
【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南
microsoft·asp.net·azure
Azure DevOps6 天前
在Azure DevOps Server中实现用户端原地址透传(X-Forward-For)
运维·microsoft·azure·devops
编码者卢布9 天前
【Azure Container App】容器应用的维护窗口设置
python·azure
热爱学习的小翁同学9 天前
Power Automate调用Azure Foundry智能体
microsoft·azure
编码者卢布10 天前
【Azure 应用服务】WEBSITE_DISABLE_CROSS_STAMP_SCALE 配置的作用说明
microsoft·azure
ChinaAI小童鞋13 天前
cc-switch 配置:Claude Code 连接 Azure OpenAI
aigc·azure
编码者卢布18 天前
【Azure App Service】为什么 Web App 上的文件会被“锁死“?
microsoft·azure·web app