3. Azure Data Factory入门
Azure Data Factory(简称 ADF)是 Azure 上的云原生数据集成服务,它的核心价值在于把“连接数据源、搬运数据、转换数据、按计划触发”这几件事拆成可复用、可组合的对象。要真正上手 ADF,必须先理解五个基础对象之间的关系:数据工厂是顶层容器,集成运行时是执行计算与网络连接的载体,链接服务描述“连到哪里、用什么凭据”,数据集描述“读写的具体数据结构”,管道与活动描述“做什么、按什么顺序做”。本节围绕这五个对象,完成第一个复制活动。
五个核心对象的分工
数据工厂本身不存储业务数据,它只是一个管理边界,所有链接服务、数据集、管道、触发器都归属于某个数据工厂。集成运行时(Integration Runtime,IR)是 ADF 真正“干活”的组件,常见有三类:Azure IR 用于云到云的数据移动与活动分发;自承载 IR 安装在企业内网机器上,用于访问本地或私有网络数据源;Azure SSIS IR 用于运行 SSIS 包。链接服务是连接信息的封装,例如 Azure Blob Storage 链接服务里包含存储账户终结点和身份验证方式。数据集建立在链接服务之上,进一步指定容器、文件夹、文件名或表名。管道是活动的逻辑分组,复制活动是最基础也最常用的活动类型。
创建数据工厂与集成运行时
在 Azure 门户中搜索“数据工厂”,点击创建,需要填写订阅、资源组、区域、名称和版本。名称必须全局唯一,只能包含字母、数字和连字符。版本选择 V2,因为 V2 才支持本节使用的复制活动、触发器和可视化创作界面。创建完成后进入“创作”页面,左侧就是工厂资源树。
集成运行时在“管理”页签中创建。如果源和目标都是 Azure 上的服务,使用默认的 AutoResolveIntegrationRuntime(即 Azure IR)即可,它由 Azure 自动分配计算资源,无需手动安装。如果数据源位于公司内网或本地服务器,则需要创建自承载 IR:下载安装包,在一台可访问数据源的 Windows 机器上安装,然后用门户中生成的密钥注册。注册成功后,IR 节点会显示“已连接”状态,这是判断网络通道是否打通的关键依据。
创建链接服务与数据集
以 Azure Blob Storage 为例,创建链接服务时选择“Azure Blob Storage”,身份验证方式可选账户密钥、托管标识或 SAS URI。教学示例中可使用账户密钥,填入存储账户名称和密钥后点击“测试连接”,返回“连接成功”才继续。链接服务只描述“如何连到存储账户”,不涉及具体文件。
数据集建立在链接服务之上。创建数据集时选择 Azure Blob Storage 的 DelimitedText 格式,指定链接服务、容器名和文件路径。例如源数据集指向容器 raw、文件 orders.csv,并勾选“第一行为表头”。接收器数据集指向容器 curated、文件 orders.csv。数据集还可以定义列结构,但复制活动允许在运行时推断,因此初学阶段可先不手动定义 schema。
创建管道与第一个复制活动
进入“创作”页签,新建管道,从“移动和转换”中拖入“复制数据”活动。在活动的“源”选项卡中选择源数据集,“接收器”选项卡中选择接收器数据集。如果两个数据集的列名一致,映射可以自动完成;若不一致,可在“映射”选项卡中手动对应。以下是一个典型的复制活动 JSON 片段,展示了源和接收器的引用方式:
{
"name": "CopyOrders",
"type": "Copy",
"inputs": [{ "referenceName": "DS_Blob_Orders_Source", "type": "DatasetReference" }],
"outputs": [{ "referenceName": "DS_Blob_Orders_Sink", "type": "DatasetReference" }],
"typeProperties": {
"source": { "type": "DelimitedTextSource" },
"sink": { "type": "DelimitedTextSink" }
}
}
点击“调试”运行管道。调试会立即触发一次执行,不需要发布。在“输出”窗口中可以看到活动状态、持续时间、读取行数和写入行数。如果状态为“成功”,且读取行数与写入行数一致,说明复制活动完成了数据搬运。此时可以到存储账户的 curated 容器中确认 orders.csv 已生成,并打开文件核对内容。
常见问题与判断依据
第一个复制活动最容易遇到三类问题。第一类是连接失败,通常表现为“测试连接”不通过,需要检查存储账户密钥、防火墙是否允许 ADF 访问,以及是否使用了正确的终结点后缀。第二类是路径错误,表现为“找不到文件或容器”,需要核对数据集中的容器名和文件路径是否与实际存储一致。第三类是列映射错误,表现为写入文件列错位或为空,此时应检查源文件表头与接收器数据集结构,必要时在映射中手动调整。
| 观察点 | 正常表现 | 异常时的排查方向 |
|---|---|---|
| 链接服务测试连接 | 返回“连接成功” | 密钥、终结点、网络访问 |
| 调试运行状态 | “成功”,持续时间数秒 | 活动配置、数据集路径 |
| 读取/写入行数 | 两者一致 | 映射、分隔符、表头设置 |
| 接收器文件 | curated 容器出现 orders.csv | 容器名、文件名、覆盖策略 |