日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/8/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云大数据利器之-RDS迁移到Maxcompute实现动态分区 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要: 當(dāng)前,很多用戶的業(yè)務(wù)數(shù)據(jù)存放在傳統(tǒng)關(guān)系型數(shù)據(jù)庫上,例如阿里云的RDS,做業(yè)務(wù)讀寫操作。當(dāng)數(shù)據(jù)量非常大的時(shí)候,此時(shí)傳系關(guān)系型數(shù)據(jù)庫會(huì)顯得有些吃力,那么會(huì)經(jīng)常有將mysql數(shù)據(jù)庫的數(shù)據(jù)遷移到[大數(shù)據(jù)處理平臺(tái)-大數(shù)據(jù)計(jì)算服務(wù)(Maxcompute,原ODPS)(https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其強(qiáng)大的存儲(chǔ)和計(jì)算能力進(jìn)行各種查詢計(jì)算,結(jié)果再回流到RDS。

點(diǎn)此查看原文:http://click.aliyun.com/m/40816/

當(dāng)前,很多用戶的業(yè)務(wù)數(shù)據(jù)存放在傳統(tǒng)關(guān)系型數(shù)據(jù)庫上,例如阿里云的RDS,做業(yè)務(wù)讀寫操作。當(dāng)數(shù)據(jù)量非常大的時(shí)候,此時(shí)傳統(tǒng)關(guān)系型數(shù)據(jù)庫會(huì)顯得有些吃力,那么會(huì)經(jīng)常有將mysql數(shù)據(jù)庫的數(shù)據(jù)遷移到[大數(shù)據(jù)處理平臺(tái)-大數(shù)據(jù)計(jì)算服務(wù)(Maxcompute,原ODPS)(https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其強(qiáng)大的存儲(chǔ)和計(jì)算能力進(jìn)行各種查詢計(jì)算,結(jié)果再回流到RDS。
一般情況下,業(yè)務(wù)數(shù)據(jù)是按日期來區(qū)分的,有的靜態(tài)數(shù)據(jù)可能是按照區(qū)域或者地域來區(qū)分,在Maxcompute中數(shù)據(jù)可以按照分區(qū)來存放,可以簡單理解為一份數(shù)據(jù)放在不同的子目錄下,子目錄的名稱以日期來命名。那么在RDS數(shù)據(jù)遷移到Maxcompute上的過程中,很多用戶希望可以自動(dòng)的創(chuàng)建分區(qū),動(dòng)態(tài)的將RDS中的數(shù)據(jù),比如按日期區(qū)分的數(shù)據(jù)存放到Maxcompute中,這個(gè)流程自動(dòng)化創(chuàng)建。同步的工具是使用Maxcompute的配套產(chǎn)品-大數(shù)據(jù)開發(fā)套件。下面就舉例說明RDS-Maxcompute自動(dòng)分區(qū)幾種方法的使用。

一,將RDS中的數(shù)據(jù)定時(shí)每天同步到Maxcompute中,自動(dòng)創(chuàng)建按天日期的分區(qū)。

這里就要用到大數(shù)據(jù)開發(fā)套件-數(shù)據(jù)集成的功能,我們采用界面化的配置。
如圖地方,設(shè)置Maxcompute的分區(qū)格式

一般配置到這個(gè)地方的時(shí)候,默認(rèn)是系統(tǒng)自帶時(shí)間參數(shù):${bdp.system.bizdate} 格式是yyyymmdd。也就是說在調(diào)度執(zhí)行這個(gè)任務(wù)的時(shí)候,這個(gè)分區(qū)會(huì)被自動(dòng)替換為
任務(wù)執(zhí)行日期的前一天
相對用戶比較方便的,因?yàn)橐话阌脩魳I(yè)務(wù)數(shù)據(jù)是當(dāng)前跑前一天的業(yè)務(wù)數(shù)據(jù),這個(gè)日期也叫業(yè)務(wù)日期。
如圖

如果用戶想使用當(dāng)天任務(wù)運(yùn)行的日期作為分區(qū)值,需要自定義這個(gè)參數(shù),方法如圖,也可以參考文檔
https://help.aliyun.com/document_detail/30281.html?spm=5176.product30254.6.604.SDunjF
自定義的參數(shù),格式非常靈活,日期是當(dāng)天日期,用戶可以自由選擇哪一天,以及格式。
可供參考的變量參數(shù)配置方式如下:
后N年:[addmonths(yyyymmdd,12?N)]N[add_months(yyyymmdd,-12*N)]
后N月:[addmonths(yyyymmdd,N)]N[add_months(yyyymmdd,-N)]
后N周:[yyyymmdd+7?N]N[yyyymmdd-7*N]
后N天:[yyyymmdd+N]N[yyyymmdd-N]
后N小時(shí):[hh24miss+N/24]N時(shí)[hh24miss-N/24]
后N分鐘:[hh24miss+N/24/60]N[hh24miss-N/24/60]
注意:
請以中括號 [] 編輯自定義變量參數(shù)的取值計(jì)算公式,例如 key1=[yyyy?mm?dd]認(rèn)數(shù)計(jì)[hh24miss-N/24/60] 表示 (yyyymmddhh24miss-(N/24/60 * 1天)) 的計(jì)算結(jié)果,然后按 hh24miss 的格式取時(shí)分秒。
使用 add_months 的計(jì)算單位為月。例如 $[add_months(yyyymmdd,12 N)-M/24/60] 表示 (yyyymmddhh24miss-(12 N 1月))-(M/24/60 1天) 的結(jié)果,然后按 yyyymmdd 的格式取年月日。
如圖,配置完成后,我們來測試運(yùn)行看下,直接查看日志

可以,看到日志中,Maxcompute(日志中打印原名ODPS)的信息中
partition分區(qū),date_test=20170829,自動(dòng)替換成功。
再看下實(shí)際的數(shù)據(jù)過去了沒呢

我們看到數(shù)據(jù)是過來了,成功自動(dòng)創(chuàng)建了一個(gè)分區(qū)值。那么這個(gè)任務(wù)定時(shí)調(diào)度的時(shí)候,就會(huì)自動(dòng)生成一個(gè)分區(qū),每天自動(dòng)的將RDS中的數(shù)據(jù)同步到Maxcompute中的按照日期創(chuàng)建的分區(qū)中。

二,如果用戶的數(shù)據(jù)有很多運(yùn)行日期之前的歷史數(shù)據(jù),怎么自動(dòng)同步,自動(dòng)分區(qū)呢。大數(shù)據(jù)開發(fā)套件-運(yùn)維中心-有個(gè)補(bǔ)數(shù)據(jù)的功能。

首先,我們需要在RDS端把歷史數(shù)據(jù)按照日期篩選出來,比如歷史數(shù)據(jù)2017-08-25這天的數(shù)據(jù),我要讓他自動(dòng)同步到Maxcompute的20170825的分區(qū)中。
在RDS階段可以設(shè)置where過濾條件,如圖

在Maxcompute頁面,還是按照之前一樣配置

然后一定要 保存-提交。
提交后到運(yùn)維中心-任務(wù)管理-圖形模式-補(bǔ)數(shù)據(jù)

選擇日期區(qū)間

提交運(yùn)行,這個(gè)時(shí)候就會(huì)同時(shí)生成多個(gè)同步的任務(wù)實(shí)例按順序執(zhí)行

看下運(yùn)行的日志,可以看到運(yùn)行過程對RDS數(shù)據(jù)的抽取,在Maxcompute自動(dòng)創(chuàng)建的分區(qū)

看下運(yùn)行結(jié)果,數(shù)據(jù)寫入的情況,自動(dòng)創(chuàng)建了分區(qū),數(shù)據(jù)同步過來了。

三,如果用戶數(shù)據(jù)量比較巨大,第一次全量的數(shù)據(jù),或者并不是按照日期分區(qū),是按照省份等分區(qū)。那么此時(shí)數(shù)據(jù)集成就不能做到自動(dòng)分區(qū)了。也就是說,想按照RDS中某個(gè)字段進(jìn)行hash,相同的字段值自動(dòng)放到Maxcompute中以這個(gè)字段對應(yīng)值的分區(qū)中。
同步本身是做不了的,是在Maxcompute中通過SQL完成,是Maxcompute的特有功能,實(shí)際上也是真正的動(dòng)態(tài)分區(qū),大家可以參考文章
https://yq.aliyun.com/articles/81775?spm=5176.8091938.0.0.JMsroJ
。那么就需要我們先把數(shù)據(jù)全量同步到Maxcompute的一個(gè)臨時(shí)表。
流程如下
1,先創(chuàng)建一個(gè)SQL腳本節(jié)點(diǎn)-用來創(chuàng)建臨時(shí)表

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

2,創(chuàng)建同步任務(wù)的節(jié)點(diǎn),就是簡單的同步任務(wù),將RDS數(shù)據(jù)全量同步到Maxcompute,不需要設(shè)置分區(qū)。
3,使用sql進(jìn)行動(dòng)態(tài)分區(qū)到目的表

drop table if exists emp_test_new; --創(chuàng)建一個(gè)ODPS分區(qū)表(最終目的表)CREATE TABLE emp_test_new (date_time STRING,name STRING,age BIGINT,sal DOUBLE ) PARTITIONED BY (date_test STRING ); --執(zhí)行動(dòng)態(tài)分區(qū)sql,按照臨時(shí)表的字段date_time自動(dòng)分區(qū),date_time字段中相同的數(shù)據(jù)值,會(huì)按照這個(gè)數(shù)據(jù)值自動(dòng)創(chuàng)建一個(gè)分區(qū)值 --例如date_time中有些數(shù)據(jù)是2017-08-25,會(huì)自動(dòng)在ODPS分區(qū)表中創(chuàng)建一個(gè)分區(qū),date=2017-08-25 --動(dòng)態(tài)分區(qū)sql如下 --可以注意到sql中select的字段多寫了一個(gè)date_time,就是指定按照這個(gè)字段自動(dòng)創(chuàng)建分區(qū) insert overwrite table emp_test_new partition(date_test)select date_time,name,age,sal,date_time from emp_test_new_temp --導(dǎo)入完成后,可以把臨時(shí)表刪除,節(jié)約存儲(chǔ)成本 drop table if exists emp_test_new_temp;

最后將三個(gè)節(jié)點(diǎn)配置成一個(gè)工作流,按順序執(zhí)行

執(zhí)行過程,我們重點(diǎn)觀察,最后一個(gè)節(jié)點(diǎn)的動(dòng)態(tài)分區(qū)過程

最后,看下數(shù)據(jù)


完成動(dòng)態(tài)分區(qū),自動(dòng)化分區(qū)。是不是很神奇,相同的日期數(shù)據(jù),到了同一個(gè)分區(qū)里。如果是以省份命名,也是如此,我自己都怕了。

大數(shù)據(jù)開發(fā)套件實(shí)際上可以完成絕大部分的自動(dòng)化作業(yè),尤其是數(shù)據(jù)同步遷移,調(diào)度等,界面化操作使得數(shù)據(jù)集成變得簡單,不用苦逼的加班搞ETL了,你懂的。

總結(jié)

以上是生活随笔為你收集整理的阿里云大数据利器之-RDS迁移到Maxcompute实现动态分区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。