MaxCompute_2_MaxCompute数据迁移文档
摘要: 乍一看標題會以為是不是作者寫錯了怎么會有從MaxCompute到MaxCompute遷移數據的場景呢在實際使用中已經有客戶遇到了這種場景比如兩個網絡互通的專有云環境之間數據遷移、公共云數加DataIDE上兩個云賬號之間數據遷移、還有網絡不通的兩個MaxCompute項目數據遷移等等下面我們逐個場景介紹。
免費開通大數據服務:https://www.aliyun.com/product/odps
乍一看標題會以為是不是作者寫錯了,怎么會有從MaxCompute到MaxCompute遷移數據的場景呢?在實際使用中已經有客戶遇到了這種場景,比如:兩個網絡互通的專有云環境之間數據遷移、公共云數加DataIDE上兩個云賬號之間數據遷移、還有網絡不通的兩個MaxCompute項目數據遷移等等,下面我們逐個場景介紹。
場景一:兩個網絡互通的專有云MaxCompute環境之間數據遷移
這種場景需要先從源MaxCompute中導出元數據DDL,在目標MaxCompute中初始化表,然后借助DataX工具完成數據遷移,步驟如下:
1.安裝配置ODPS客戶端
https://help.aliyun.com/document_detail/27804.html
2.安裝配置Datax客戶端
下載DataX工具包,下載后解壓至本地某個目錄,修改權限為755,進入bin目錄,即可運行樣例同步作業:
$ tar zxvf datax.tar.gz $ sudo chmod -R 755 {YOUR_DATAX_HOME} $ cd {YOUR_DATAX_HOME}/bin $ python datax.py ../job/job.json3.表結構遷移
3.1 從ODPS中導出某個表的建表語句,可用來測試數據同步。
export table table_name; DDL:create table IF NOT EXISTS ` date_timestame ` (`id` datetime comment "") partitioned by(pt string comment ""); alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161001'); alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161101'); alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161201'); alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20170101');3.2 從ODPS批量導出建表語句。
export <projectname> <local_path>;3.3 將建表語句在目標ODPS的project下執行,即可完成表結構創建。
4.數據遷移
從源ODPS讀取數據寫入到目標ODPS,先按照“表結構遷移”在目標ODPS創建一個表,做DataX數據同步驗證。
4.1 、創建作業的配置文件(json格式)
可以通過命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}
odps2odps.json樣例(填寫相關參數,odpsServer/ tunnelServer要改成源/目標ODPS配置):
{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "odpsreader","parameter": {"accessId": "${srcAccessId}","accessKey": "${srcAccessKey}","project": "${srcProject}","table": "${srcTable}","partition": ["pt=${srcPartition}"],"column": [ "*" ],"odpsServer": "http://service.odpsstg.aliyun-inc.com/stgnew","tunnelServer": "http://tunnel.odpsstg.aliyun-inc.com" }},"writer": {"name": "odpswriter","parameter": {"accessId": "${dstAccessId}","accessKey": "${dstAccessKey}","project": "${dstProject}","table": "${dstTable}","partition": "pt","column": [ "*" ],"odpsServer": "http://service.odpsstg.aliyun-inc.com/stgnew","tunnelServer": "http://tunnel.odpsstg.aliyun-inc.com" }}}]} }4.2 啟動DataX
$ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./odps2odps.json同步結束,顯示日志如下:
4.3 、批量遷移
根據導出的表結構批量生成DataX同步腳本,我會協助完成。
場景二:公共云數加DataIDE上兩個云賬號之間數據遷移
這個場景比較容易理解,比如一個公司很可能會申請多個云賬號,假如每個云賬號都開通了MaxCompute,很可能就會碰到兩個云賬號的MaxCompute之間數據遷移。公共云上都借助于DataIDE使用MaxCompute,而DataIDE上面本身提供了數據同步任務,我們通過配置數據同步任務即可很容易的完成數據遷移。執行步驟如下:
1、在其中一個MaxCompute項目空間項目管理中添加數據源,該數據源為另一個云賬號的MaxCompute項目空間。
2、在DataIDE數據開發中新建“數據同步”任務,如果目標數據源中表還不存在,可以點擊“快速建ODPS表”,配置字段映射等。
3、保存之后點擊“測試運行”即可。
場景三:網絡不通的兩個MaxCompute環境數據遷移
這種場景做數據同步局限性比較大,由于網絡不通,數據遷移必須要在中間落盤后再寫入,所以當數據量比較大時要考慮磁盤容量、帶寬等問題。步驟如下:
1、首先也是要先將源MaxCompute項目空間的DDL導出并在目標項目空間創建表,操作同場景一。
export <projectname> <local_path>;2、安裝配置ODPS客戶端,操作同場景一。
3、通過ODPS CLT中的tunnel命令實現數據的導出。命令參考:
Example:
tunnel download test_project.test_table log.txt
4、通過ODPS CLT中的tunnel命令實現數據的導入。命令參考:
Example:
tunnel upload log.txt test_project.test_table
原文鏈接
干貨好文,請關注掃描以下二維碼:
總結
以上是生活随笔為你收集整理的MaxCompute_2_MaxCompute数据迁移文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NSURLProtocol 拦截 NSU
- 下一篇: 机器学习的未来——深度特征融合