如何利用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中设置动态传参

相关推荐
EllenShen1232 天前
服务器检测databricks job的运行状态封装
运维·azure
安得权7 天前
Azure DevOps 学习概况总结
学习·azure·devops
Azure DevOps12 天前
Azure DevOps Server 正式版本发布
运维·microsoft·azure·devops
Channing Lewis14 天前
vault分生产和dev吗?也就是说是否支持在一个azure app中创建vault,但是分为生产和dev,而不是为生产和dev分别创建一个app
microsoft·azure
切糕师学AI17 天前
Azure RTOS ThreadX 简介
microsoft·嵌入式·azure·rtos
开开心心_Every24 天前
Word转PDF工具,免费生成图片型文档
网络·笔记·pdf·word·powerpoint·excel·azure
Leinwin25 天前
Azure NCv6 现已开放公共预览
microsoft·azure
具***71 个月前
自动驾驶学习宝藏:Autoware Universe 中英对照技术文档
azure
询问QQ:688238861 个月前
线性与非线性MPC控制的四旋翼轨迹跟踪仿真对比研究
azure