一、DataWorks平台概述与对接场景
DataWorks作为阿里云的一站式大数据开发治理平台,几乎成了很多团队处理数据的“标配”。它集成了数据集成、开发、治理、分析、服务等全链路能力,深度打通了MaxCompute、EMR、Hologres、Flink这些主流引擎,能支持跨引擎协同工作。 在实际业务里,DataWorks最常见的对接场景,无非就是这几个:把业务数据库(像MySQL、PostgreSQL)的数据批量同步到数仓做分析;在Data Studio里创建数据库节点,写SQL任务并配置周期性调度;基于数据表快速生成API,对外提供数据服务;或者通过OpenAPI以编程方式查询数据血缘、管理任务等等。 要开始操作,需要先登录阿里云控制台,点击:阿里云控制台二、环境准备:工作空间创建与计算资源绑定
工作空间是DataWorks里进行任务开发和成员权限管理的基本单元。可以说,所有开发工作都离不开它。一个工作空间能支持创建多种数据源,也能绑定多种计算资源。2.1 创建工作空间
登录DataWorks控制台后,先在左上角切换到目标地域(注意,地域一旦创建就不能改了)。然后点击左侧导航栏的“工作空间列表”,进入列表页面后,再点击“创建工作空间”。在创建页面,需要完成几个关键配置: - **工作空间名称**:起一个唯一且符合团队规范的名字 - **生产、开发环境隔离**:强烈建议开启,这样会创建标准模式工作空间,确保开发和生产的隔离 - **使用新版数据开发(Data Studio)** :推荐开启 执行创建操作的账号,必须是阿里云主账号,或者已经授予了`AliyunDataWorksFullAccess`等权限策略的RAM用户。DataWorks工作空间分两种模式:标准模式和简单模式。标准模式会提供独立的开发和生产环境,是保障数据安全和流程规范的最佳选择;而简单模式只有生产环境,更适合个人测试或快速验证的场景。2.2 绑定计算资源
工作空间创建好之后,还需要绑定计算资源才能进行任务开发。拿MaxCompute来说,你需要新建两个MaxCompute项目,分别绑定到开发环境和生产环境。DataWorks构建了一个开放的计算引擎生态,深度集成了MaxCompute、EMR、Hologres、Flink等主流引擎。2.3 资源组规划
目前,DataWorks推荐使用Serverless资源组。它整合了旧版资源组(独享调度、独享数据集成、独享数据服务、公共资源组)的核心功能,用一个资源组就能搞定数据同步、任务调度运行、API服务调用和管理等等。如果你接手的是历史项目,那可能还得继续用独享资源组:独享调度资源主要负责任务调度,适合高并发或对执行时间要求严格的场景;独享集成资源则主要用于数据的抽取、转换和加载。三、数据源配置:对接各类数据源
在使用DataWorks的数据集成、数据开发或数据分析功能之前,必须先添加好数据源。3.1 进入数据源配置页面
登录DataWorks控制台,切换到目标地域后,在左侧导航栏选择对应的工作空间,点击进入“管理中心”。接着,在左侧导航栏点击“数据源”,进入数据源页面。最后,点击“新增数据源”,选择对应类型进行配置。3.2 网络连通方案
配置数据源前,还得先搞定网络连通和白名单。DataWorks的资源组必须能访问数据源实例才行。这里有几种常见的方案: - **私网连接(推荐)** :当DataWorks资源组和数据源在同一个VPC内时,直接用VPC地址连接 - **公网连接**:数据源不在同一VPC时,可以通过公网地址连接,但需要注意安全和带宽限制 - **跨账号连接**:需要通过跨账号授权或VPC对等连接等方式来实现网络互通3.3 配置MySQL数据源示例
以MySQL为例,创建MySQL数据源时需要配置以下参数: - **数据源名称**:输入一个规范的名称,比如 `user_beha vior_analysis_mysql` - **配置模式**:选择“连接串模式” - **连接地址**:填写数据库的主机IP地址和端口号(比如3306) - **数据库名称**:输入目标数据库名 - **用户名与密码**:填写数据库的访问凭证 在连接配置区域,记得分别点击生产环境和开发环境的“测试连通性”,确保状态是“可连通”。这里要特别注意:必须确保资源组已经绑定到工作空间,并且配置了公网访问能力,否则后续数据同步时就会报错。四、数据集成:数据同步任务配置
数据集成是DataWorks数据工程体系的核心枢纽,它支持在MySQL、MaxCompute、Hologres、Kafka等数十种数据源之间进行高效的数据同步。DataWorks把数据的抽取、转换和加载全链路整合到了同一个视图中,开发者不用在不同功能模块间来回切换,就能完成从数据采集到数据处理的完整工作流。4.1 同步方案概览
数据集成提供了三大类方案:离线批处理同步、实时数据同步和整库迁移。选择哪种方案,主要看两个维度:时效性要求,以及同步规模与复杂度。 **离线同步**适用于对时效性要求不高、需要周期性批量处理的场景。最典型的应用就是T+1数据仓库的ODS层构建。离线同步有个核心前提:源表必须包含能界定数据增量的字段,比如`gmt_modified`这样的时间戳,或者自增ID。 **实时同步**则支持将多种数据源进行星型链路组合,可以把不同的输入和输出数据源搭配成多种同步链路。其实时性在秒级到分钟级,通过CDC(Change Data Capture)技术持续捕获源端的数据变更并同步到目标端。4.2 向导模式配置
向导模式是DataWorks提供的可视化配置方式。创建离线同步节点后,可以在DataWorks界面上以可视化方式配置数据来源、去向以及字段的映射关系,完成数据导出操作。主要配置步骤是这样的: 1. 在数据集成页面新建离线同步节点 2. 选择数据来源与数据去向 3. 配置字段映射关系 4. 设置同步速率控制(包括作业速率上限和脏数据检查规则等) 5. 配置调度周期与参数4.3 脚本模式配置与JSON示例
当需要更精细化的离线任务配置时,可以用脚本模式。通过编写数据同步的JSON脚本,并结合DataWorks调度参数,就能把源端单表或分库分表的全量或增量数据,周期性同步到目标数据表。 下面是一个典型的MySQL到MaxCompute离线同步任务JSON脚本示例:4.4 分库分表同步配置
DataWorks支持通过向导模式或脚本模式配置分库分表离线同步任务。对于分库分表场景,可以把每个分库创建为普通数据源,然后再创建一个分库分表数据源,将多个普通数据源合并为一个。关键配置包括: - 自定义数据源名称 - 选择已创建的各分库普通数据源 - 选择Meta数据源作为默认元数据模板 分库分表数据源支持引用最多5000个数据源。这里有个硬性要求:所有数据源内的库表结构必须保持一致,否则后续同步任务会执行报错。五、任务调度配置
DataWorks中的调度依赖,用来定义周期调度节点之间的上下游关系。配置了调度依赖后,系统会确保所有上游节点的实例都运行成功,下游节点的实例才会被触发执行,从而保障数据能按正确的顺序产出和消费。5.1 调度周期设置
DataWorks支持分钟、小时、日、周、月、年等类型的调度任务。任务的各个周期是通过实例的方式执行的。当上下游调度依赖的类型不同时,需要理解各周期实例之间的依赖挂载方式。5.2 同周期依赖与自动解析
同周期依赖是DataWorks默认开启的依赖解析机制。系统会根据节点代码自动解析输入输出,建立同周期实例间的上下游依赖关系。在调度配置页面顶部,提供了“从代码解析输入输出”、“清空解析结果”、“刷新输入输出”等按钮,以及“提交前自动解析”选项。5.3 跨周期依赖(依赖上一周期)
跨周期依赖的意思是,本节点本次实例运行依赖相应节点上一周期实例的运行情况。等上一周期实例运行成功后,本节点才会运行。通常,如果本节点需要依赖上游昨天产出的数据,或者小时、分钟任务依赖自己上一小时或分钟的实例,就需要设置跨周期依赖。 跨周期依赖在DataWorks的DAG图中以虚线形式展示。支持以下几种依赖形式: - **本节点自依赖**:本节点本次实例运行依赖于本节点上一周期的实例运行结果 - **依赖下游节点上一周期**:本节点本次实例运行取决于下游节点上一周期的实例运行情况 - **依赖其他节点上一周期**:本节点本次实例运行取决于其他节点上一周期实例的运行结果5.4 调度参数配置
调度参数是DataWorks中实现任务动态化和配置管理的核心机制。它允许你在代码中使用变量占位符,并在任务调度时为其注入动态值。 定义参数的方法是:在代码中通过参数名方式声明参数,比如`{参数名}`方式声明参数,比如`${参数名}`方式声明参数,比如`{today}`。然后在右侧调度配置中,可以用常量或调度时间表达式给参数赋值。举个例子,在ODPS SQL代码中通过`{today}`引用参数,然后在调度配置的参数区域,将参数`today`赋值为调度时间表达式`$[yyyymmdd]`,这样就建立了代码变量与调度参数的对应关系。调度参数常用的时间表达式有: - `$[yyyymmdd]`:表示调度日期的年月日 - `$[yyyy-mm-dd]`:表示调度日期的年-月-日格式 - `$[hh24miss]`:表示调度时间的时分秒 - `$[yyyymmdd-1]`:表示调度日期的前一天
