背景
当前大数据时代背景下,企业对数据的处理、分析和实时应用的需求日益增强。阿里云MaxCompute广泛应用于海量数据的ETL、数据分析等场景,但在将处理后的数据进一步同步至在线数据库系统,如ADB MySQL 3.0(阿里云自研的新一代云原生关系型数据库MySQL版)以支持实时查询、业务决策等需求时,可能会遇到数据迁移速度缓慢的问题。
DataphinV3.14版本支持数据库调度,支持外表导入SQL,实现通过MaxCompute外表的方式将数据批量同步至ADB MySQL 3.0中,显著提升数据迁移的速度和效率。
操作步骤
在ADB MySQL内创建MaxCompute外表
- 在 ADB MySQL 内创建 MaxCompute 外表,参考文档:
https://help.aliyun.com/zh/analyticdb-for-mysql/developer-reference/create-external-table?spm=a2c4g.11186623.0.i11#section-pu4-f9t-k2x
在Datphin内创建ADB MySQL数据源
- 把 Dataphin 的IP加入 ADB MySQL 的IP白名单中,参考文档:
https://help.aliyun.com/zh/analyticdb-for-mysql/getting-started/configure-a-whitelist?spm=a2c4g.11186623.0.i8 - 在 Dataphin 中创建 MySQL 数据源。
由于 ADB MySQL 兼容 MySQL 协议,Dataphin支持把 ADB MySQL 作为一个 MySQL 数据源。
入口:Dataphin > 管理中心 > 数据源管理 > 新建数据源
新建数据源 > 数据源类型选择MySQL
按照ADB MySQL的JDBC URL信息填写即可。
在Datphin内创建数据库SQL周期任务
- 创建数据库SQL周期任务
入口:Dataphin > 研发 > 开发 > 新建计算任务 > 数据库SQL
调度类型选择周期任务,数据源类型选择MySQL,数据源选择刚刚创建的ADB MySQL的数据源。 - 开发外表导入任务,SQL开发可参考文档:
https://help.aliyun.com/zh/analyticdb-for-mysql/user-guide/use-external-tables-to-import-data-to-data-warehouse-edition-2?spm=a2c4g.11186623.0.0.cdde515ei7cZmc
开发完SQL后,配置任务调度,可以传入'${bizdate}'这样的调度参数。(过滤条件中务必带上MaxCompute侧表的分区键,否则可能会很慢) - 将任务提交发布后即可实现数据的周期性同步
测试结果
- 在ADB MySQL资源规格配置为8组Worker (工作节点),24个Executor (执行器),64个Shard (分片/分区)的情况下,通过MaxCompute外表的方式从MaxCompute导入ADB MySQL内表,导入一个宽表(30+列),且全索引。7000万行数据,耗时1分30秒。
- Worker的CPU开销在30%内,Executor的CPU开销在10%以内,IO占用在2%以内。
结论
DataphinV3.14版本支持基于传统的数据库的数据研发,统一调度运维:① 在数据同步到数仓前,需要进行数据的加工处理,如生成临时表,将临时表的数据同步到数仓内,同步完成后删除临时表;② 数据写入数据集市后,需要进一步的数据加工处理。实现在同一个平台内,可对数据库的表进行快速的分析探查,一站式数据研发、快速验证,无需多平台协同。
大大提高了研发效率,更多精彩功能欢迎升级使用。