阿里云大数据利器之-RDS迁移到Maxcompute实现自动分区

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 当前,很多用户的业务数据存放在传统关系型数据库上,例如阿里云的RDS,做业务读写操作。当数据量非常大的时候,此时传系关系型数据库会显得有些吃力,那么会经常有将mysql数据库的数据迁移到[大数据处理平台-大数据计算服务(Maxcompute,原ODPS)(https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其强大的存储和计算能力进行各种查询计算,结果再回流到RDS。
当前,很多用户的业务数据存放在传统关系型数据库上,例如阿里云的RDS,做业务读写操作。当数据量非常大的时候,此时传统关系型数据库会显得有些吃力,那么会经常有将mysql数据库的数据迁移到[大数据处理平台-大数据计算服务(Maxcompute,原ODPS)( https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其强大的存储和计算能力进行各种查询计算,结果再回流到RDS。
         一般情况下,业务数据是按日期来区分的,有的静态数据可能是按照区域或者地域来区分,在Maxcompute中数据可以按照分区来存放,可以简单理解为一份数据放在不同的子目录下,子目录的名称以日期来命名。那么在RDS数据迁移到Maxcompute上的过程中,很多用户希望可以自动的创建分区,动态的将RDS中的数据,比如按日期区分的数据存放到Maxcompute中,这个流程自动化创建。同步的工具是使用Maxcompute的配套产品-[大数据开发套件]( https://data.aliyun.com/product/ide?spm=5176.7741945.765261.313.TQqfkK)。下面就举例说明RDS-Maxcompute自动分区几种方法的使用。
一,将RDS中的数据定时每天同步到Maxcompute中,自动创建按天日期的分区。
这里就要用到大数据开发套件-数据集成的功能,我们采用界面化的配置。
如图地方,设置Maxcompute的分区格式
7e6208ade7eb6988d5825185cdfcb21eee2fe20c
一般配置到这个地方的时候,默认是系统自带时间参数:${bdp.system.bizdate} 格式是yyyymmdd。也就是说在调度执行这个任务的时候,这个分区会被自动替换为 **任务执行日期的前一天**,相对用户比较方便的,因为一般用户业务数据是当前跑前一天的业务数据,这个日期也叫业务日期。
如图
742352e50f703175b018316749fae8b154756380

如果用户想使用当天任务运行的日期作为分区值,需要自定义这个参数,方法如图,也可以参考文档
https://help.aliyun.com/document_detail/30281.html?spm=5176.product30254.6.604.SDunjF
自定义的参数,格式非常灵活,日期是当天日期,用户可以自由选择哪一天,以及格式。
可供参考的变量参数配置方式如下:
后N年:$[add_months(yyyymmdd,12*N)]
前N年:$[add_months(yyyymmdd,-12*N)]
后N月:$[add_months(yyyymmdd,N)]
前N月:$[add_months(yyyymmdd,-N)]
后N周:$[yyyymmdd+7*N]
前N周:$[yyyymmdd-7*N]
后N天:$[yyyymmdd+N]
前N天:$[yyyymmdd-N]
后N小时:$[hh24miss+N/24]
前N小时:$[hh24miss-N/24]
后N分钟:$[hh24miss+N/24/60]
前N分钟:$[hh24miss-N/24/60]
注意:
请以中括号 [] 编辑自定义变量参数的取值计算公式,例如 key1=$[yyyy-mm-dd]。
默认情况下,自定义变量参数的计算单位为天。例如 $[hh24miss-N/24/60] 表示 (yyyymmddhh24miss-(N/24/60 * 1天)) 的计算结果,然后按 hh24miss 的格式取时分秒。
使用 add_months 的计算单位为月。例如 $[add_months(yyyymmdd,12 N)-M/24/60] 表示 (yyyymmddhh24miss-(12 N 1月))-(M/24/60 1天) 的结果,然后按 yyyymmdd 的格式取年月日。
如图,配置完成后,我们来测试运行看下,直接查看日志
e8db68c9ea59598baf83fbf25763252531592b3f
可以,看到日志中,Maxcompute(日志中打印原名ODPS)的信息中
partition分区,date_test=20170829,自动替换成功。
再看下实际的数据过去了没呢
91a1c862682c842c32d9d9301f0b81eb8f3b36d2
我们看到数据是过来了,成功自动创建了一个分区值。那么这个任务定时调度的时候,就会自动生成一个分区,每天自动的将RDS中的数据同步到Maxcompute中的按照日期创建的分区中。
二,如果用户的数据有很多运行日期之前的历史数据,怎么自动同步,自动分区呢。大数据开发套件-运维中心-有个补数据的功能。
首先,我们需要在RDS端把历史数据按照日期筛选出来,比如历史数据2017-08-25这天的数据,我要让他自动同步到Maxcompute的20170825的分区中。
在RDS阶段可以设置where过滤条件,如图
978e24ec0e6466cb970fdeaf6dace94d7300c9df
在Maxcompute页面,还是按照之前一样配置
5fca7fcd1e56cb358c1907239207f925f5a254d5
然后一定要 保存-提交。
提交后到运维中心-任务管理-图形模式-补数据
77eee8edaf1113290ce93d87a60ef89a56f1fa42
选择日期区间
585b37615ec748788bb5410f2509bd18b5312be4
提交运行,这个时候就会同时生成多个同步的任务实例按顺序执行
3d81a0e5e45d4b4ed5c7e369fc4006d51b807408
看下运行的日志,可以看到运行过程对RDS数据的抽取,在Maxcompute自动创建的分区
d33959555f20268e703470380d17258434bbc3a8
看下运行结果,数据写入的情况,自动创建了分区,数据同步过来了。
3a2a193e17534c06a3c9f1e29a20c9bea64c4c9a
三,如果用户数据量比较巨大,第一次全量的数据,或者并不是按照日期分区,是按照省份等分区。那么此时数据集成就不能做到自动分区了。也就是说,想按照RDS中某个字段进行hash,相同的字段值自动放到Maxcompute中以这个字段对应值的分区中。
同步本身是做不了的,是在Maxcompute中通过SQL完成,是Maxcompute的特有功能,实际上也是真正的动态分区,大家可以参考文章
。那么就需要我们先把数据全量同步到Maxcompute的一个临时表。
流程如下
1,先创建一个SQL脚本节点-用来创建临时表

drop table if exists emp_test_new_temp;
CREATE TABLE emp_test_new_temp 
(date_time STRING,
	name STRING,
	age BIGINT,
	sal DOUBLE);	


2,创建同步任务的节点,就是简单的同步任务,将RDS数据全量同步到Maxcompute,不需要设置分区。
3,使用sql进行动态分区到目的表

drop table if exists emp_test_new;
--创建一个ODPS分区表(最终目的表)
	CREATE TABLE emp_test_new (
	date_time STRING,
	name STRING,
	age BIGINT,
	sal DOUBLE
)
PARTITIONED BY (
	date_test STRING
);
--执行动态分区sql,按照临时表的字段date_time自动分区,date_time字段中相同的数据值,会按照这个数据值自动创建一个分区值
--例如date_time中有些数据是2017-08-25,会自动在ODPS分区表中创建一个分区,date=2017-08-25
--动态分区sql如下
--可以注意到sql中select的字段多写了一个date_time,就是指定按照这个字段自动创建分区
insert overwrite table emp_test_new partition(date_test)select date_time,name,age,sal,date_time from emp_test_new_temp
--导入完成后,可以把临时表删除,节约存储成本
drop table if exists emp_test_new_temp;

最后将三个节点配置成一个工作流,按顺序执行

78b6ceb9adff0dcb1be35f1a44ad1eff0c507fc6

执行过程,我们重点观察,最后一个节点的动态分区过程

6ff3be2c9bf9aaa3cc83e9dc2f2c53fc1a6ddcea

最后,看下数据

258e38caedf94aa880c6f7188a865d977feb7694

完成动态分区,自动化分区。是不是很神奇,相同的日期数据,到了同一个分区里。如果是以省份命名,也是如此,我自己都怕了。

大数据开发套件实际上可以完成绝大部分的自动化作业,尤其是数据同步迁移,调度等,界面化操作使得数据集成变得简单,不用苦逼的加班搞ETL了,你懂的。








相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 分布式计算
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
115 35
|
2月前
|
存储 人工智能 数据管理
|
1月前
|
运维 关系型数据库 MySQL
体验领礼啦!体验自建数据库迁移到阿里云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」上线!本方案介绍如何将自建数据库平滑迁移至云数据库RDS,解决业务增长带来的运维难题。通过使用RDS MySQL,您可获得稳定、可靠和安全的企业级数据库服务,专注于核心业务发展。完成任务即可领取桌面置物架,每个工作日限量50个,先到先得。
|
1月前
|
存储 人工智能 数据管理
媒体声音|专访阿里云数据库周文超博士:AI就绪的智能数据平台设计思路
在生成式AI的浪潮中,数据的重要性日益凸显。大模型在实际业务场景的落地过程中,必须有海量数据的支撑:经过训练、推理和分析等一系列复杂的数据处理过程,才能最终产生业务价值。事实上,大模型本身就是数据处理后的产物,以数据驱动的决策与创新需要通过更智能的平台解决数据多模处理、实时分析等问题,这正是以阿里云为代表的企业推动 “Data+AI”融合战略的核心动因。
|
2月前
|
机器学习/深度学习 分布式计算 数据挖掘
MaxFrame 性能评测:阿里云MaxCompute上的分布式Pandas引擎
MaxFrame是一款兼容Pandas API的分布式数据分析工具,基于MaxCompute平台,极大提升了大规模数据处理效率。其核心优势在于结合了Pandas的易用性和MaxCompute的分布式计算能力,无需学习新编程模型即可处理海量数据。性能测试显示,在涉及`groupby`和`merge`等复杂操作时,MaxFrame相比本地Pandas有显著性能提升,最高可达9倍。适用于大规模数据分析、数据清洗、预处理及机器学习特征工程等场景。尽管存在网络延迟和资源消耗等问题,MaxFrame仍是处理TB级甚至PB级数据的理想选择。
66 4
|
2月前
|
运维 关系型数据库 MySQL
自建数据库迁移到云数据库RDS
本次课程由阿里云数据库团队的凡珂分享,主题为自建数据库迁移至云数据库RDS MySQL版。课程分为四部分:1) 传统数据库部署方案及痛点;2) 选择云数据库RDS MySQL的原因;3) 数据库迁移方案和产品选型;4) 线上活动与权益。通过对比自建数据库的局限性,介绍了RDS MySQL在可靠性、安全性、性价比等方面的优势,并详细讲解了使用DTS(数据传输服务)进行平滑迁移的步骤。此外,还提供了多种优惠活动信息,帮助用户降低成本并享受云数据库带来的便利。
103 6
|
2月前
|
SQL DataWorks 数据可视化
阿里云DataWorks评测:大数据开发治理平台的卓越表现
阿里云DataWorks是一款集数据集成、开发、分析与管理于一体的大数据平台,支持多种数据源无缝整合,提供可视化ETL工具和灵活的任务调度机制。其内置的安全体系和丰富的插件生态,确保了数据处理的高效性和安全性。通过实际测试,DataWorks展现了强大的计算能力和稳定性,适用于中小企业快速搭建稳定高效的BI系统。未来,DataWorks将继续优化功能,降低使用门槛,并推出更多灵活的定价方案,助力企业实现数据价值最大化。
|
2月前
|
SQL 存储 分布式计算
阿里云 Paimon + MaxCompute 极速体验
Paimon 和 MaxCompute 的对接经历了长期优化,解决了以往性能不足的问题。通过半年紧密合作,双方团队专门提升了 Paimon 在 MaxCompute 上的读写性能。主要改进包括:采用 Arrow 接口减少数据转换开销,内置 Paimon SDK 提升启动速度,实现原生读写能力,减少中间拷贝与转换,显著降低 CPU 开销与延迟。经过双十一实战验证,Paimon 表的读写速度已接近 MaxCompute 内表,远超传统外表。欢迎体验!
|
28天前
|
SQL 数据可视化 大数据
从数据小白到大数据达人:一步步成为数据分析专家
从数据小白到大数据达人:一步步成为数据分析专家
212 92
|
3月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
745 7