作者:梦实
MaxCompute是适用于数据分析场景的云数据仓库,适用于大型互联网企业的数据仓库和BI分析、网站的日志分析、电子商务网站的交易分析、用户特征和兴趣挖掘等。大数据开发治理平台 DataWorks 基于MaxCompute / EMR / MC-Hologres 等大数据计算引擎,为客户提供专业高效、安全可靠的一站式大数据开发与治理平台。本文介绍 PolarDB-X 与 MaxCompute 系统的快速对接方式,方便您对在线业务数据进行大数据分析。
前提
创建或者使用已有的PolarDB-X实例
DataWorks中创建好项目
MaxCompute中建好集群
在DataWorks中准备好MaxCompute的数据源
以上这些请自行参考相关文档完成。
准备测试数据
我们首先在PolarDB-X中创建一些测试数据。
1.建库,并创建一张表:
create database d1 mode=auto;
use d1;
CREATE TABLE `t1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c1` int(11) DEFAULT NULL,
`gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`Id`)
);
2.制造一些数据:
insert into t1 values (null,rand()*20000,now());
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
insert into t1 select null,rand()*20000,now() from t1;
创建数据源
为了让DataWorks能读取PolarDB-X的数据,需要创建一个数据源。
1.进入DataWorks控制台,选择数据集成:
2.点击左边的数据源:
3.点击右上角新增数据源:
4.选择DRDS:
5.数据源类型选择连接串模式,将PolarDB-X实例的内网地址拼在JDBC URL中,并测试连通性通过:
注意,这里前提了已经有了独享数据集成资源组,并已打通了与该PolarDB-X实例之间的网络。如果未满足该前提,需要先额外完成下面的支线任务:
支线:创建独享数据集成资源组并打通网络
1.在没有独享数据集成资源组的情况下,需要先创建一个独享数据集成资源组:
2.将该独享数据集成资源组的网络与我们的PolarDB-X实例打通,操作入口地址:https://workbench.data.aliyun.com/?xconsole=true#/resourcelist/?region=cn-hangzhou&tab=exclusive
3.点击网络设置:
4.点击新增绑定:
5.选择PolarDB-X实例对应的网络信息,重点是专有网络、可用区、交换机。安全组暂不明实际意义,可以随便选一个。
6.记录绑定网络后,该资源组的交换机网段:
7.在PolarDB-X控制台上,将上面记录的网段添加到白名单中:
8.注意,更复杂的网络模型(例如跨账号等),请参考DataWorks官方文档提供的各种解决方案。
创建同步任务
这里以创建一个“一次性全量同步到MaxCompute任务”为例。
1.在同步任务菜单中,点击新建任务:
2.数据来源选择DRDS,数据去向选择MaxCompute,同步方案选择“整库离线同步至MaxCompute(一次性全量)”,点击下一步:
3.选择之前创建的数据源、资源组,以及MaxCompute的信息,并测试通过连通性:
4.选择要同步的表:
5.刷新下表映射:
6.一路下一步,最后执行同步任务:
7.在执行详情中,可以看到同步的结果:
常见问题
- 对于PolarDB-X 1.0(DRDS)与PolarDB-X 2.0均适用于本文中的方法
- 对于PolarDB-X 2.0,mode=auto于mode=drds的数据库均适用于本文中的方法
- 在DataWorks中,一律选择DRDS。(由于PolarDB-X和MySQL的高度兼容,选择MySQL也没啥问题,但选择DRDS我们内部做过对应的优化,性能会更好)
- 本文中的PolarDB-X实例版本为:5.4.15-16704996,请尽可能不低于此版本,老的版本中INFORMATION_SCHEMA存在一些兼容性问题,可能无法与DataWorks工作的很好
- 对于开源自建的PolarDB-X实例,同样适用于本文中的方法。核心在于使用连接串来创建数据源,并打通网络。
- 通过DataWorks将数据同步到其他地方也是大同小异,参考本文方法即可