注意事項
此功能適用於Tablestore寬表模型和時序模型。
準備工作
已開通OSS服務並建立儲存空間Bucket。具體操作,請參見開通OSS服務和通過控制台建立儲存空間。
已確認和記錄Tablestore中要同步到OSS的執行個體、資料表或者時序表資訊。
已開通DataWorks服務並建立工作空間。具體操作,請參見開通DataWorks服務和建立工作空間。
已建立RAM使用者並為RAM使用者授予OSS完全系統管理權限(AliyunOSSFullAccess)和管理Tablestore許可權(AliyunOTSFullAccess)。具體操作,請參見建立RAM使用者和為RAM使用者授權。
重要 由於配置時需要填寫存取金鑰AccessKey(AK)資訊來執行授權,為避免阿里雲帳號泄露AccessKey帶來的安全風險,建議您通過RAM使用者來完成授權和AccessKey的建立。
已為RAM使用者建立AccessKey。具體操作,請參見建立AccessKey。
步驟一:新增Tablestore資料來源
將Tablestore資料庫添加為資料來源,具體步驟如下:
進入Data Integration頁面。
以專案系統管理員身份登入DataWorks控制台。
在左側導覽列,單擊工作空間列表後,選擇地區。
在工作空間列表頁面,在目標工作空間操作列選擇快速進入>Data Integration。
在左側導覽列,單擊資料來源。
在資料來源頁面,單擊新增資料來源。
在新增資料來源對話方塊,找到Tablestore區塊,單擊Tablestore。
在新增OTS資料來源對話方塊,根據下表配置資料來源參數。
參數 | 說明 |
資料來源名稱 | 資料來源名稱必須以字母、數字、底線(_)組合,且不能以數字和底線(_)開頭。 |
資料來源描述 | 對資料來源進行簡單描述,不得超過80個字元。 |
Endpoint | Tablestore執行個體的服務地址。更多資訊,請參見服務地址。 如果Tablestore執行個體和目標資料來源的資源在同一個地區,填寫VPC地址;如果Tablestore執行個體和目標資料來源的資源不在同一個地區,填寫公網地址。 |
Table Store執行個體名稱 | Tablestore執行個體的名稱。更多資訊,請參見執行個體。 |
AccessKey ID | 阿里雲帳號或者RAM使用者的AccessKey ID和AccessKey Secret。擷取方式請參見建立AccessKey。 |
AccessKey Secret |
測試資源群組連通性。
建立資料來源時,您需要測試資源群組的連通性,以保證同步任務使用的資源群組能夠與資料來源連通,否則將無法正常執行資料同步任務。
重要 資料同步時,一個任務只能使用一種資源群組。資源群組列表預設顯示僅Data Integration公用資源群組。為確保資料同步的穩定性和效能要求,推薦使用獨享Data Integration資源群組。
單擊前往購買進行全新建立或單擊綁定已購資源群組綁定已有資源群組。具體操作,請參見新增和使用獨享Data Integration資源群組。
單擊相應資源群組操作列的測試連通性。
當連通狀態顯示為可連通時,表示連通成功。
測試連通性通過後,單擊完成。
在資料來源列表中,可以查看建立的資料來源。
步驟二:新增OSS資料來源
具體操作與步驟一類似,只需在新增資料來源對話方塊,找到OSS區塊,單擊OSS。
本樣本中,該資料來源名稱使用OTS2OSS,如下圖所示。
步驟三:建立同步任務節點
進入資料開發頁面。
以專案系統管理員身份登入DataWorks控制台。
選擇地區,在左側導覽列,單擊工作空間列表。
在工作空間列表頁面,在目標工作空間操作列選擇快速進入>資料開發。
在DataStudio控制台的資料開發頁面,單擊商務程序節點下的目標商務程序。
如果需要建立商務程序,請參見建立商務程序。
在Data Integration節點上右鍵選擇建立節點 > 離線同步。
在建立節點對話方塊,選擇路徑並填寫節點名稱。
單擊確認。
在Data Integration節點下會顯示建立的離線同步節點。
步驟四:配置離線同步任務並啟動
配置Tablestore到OSS的全量資料同步任務,請根據所用資料存放區模型選擇相應任務配置方式。
同步資料表資料的任務配置
在Data Integration節點下,雙擊開啟建立的離線同步任務節點。
配置同步網路連結。
選擇離線同步任務的資料來源、資料去向以及用於執行同步任務的資源群組,並測試連通性。
重要 資料同步任務的執行必須經過資源群組來實現,請選擇資源群組並保證資源群組與讀寫兩端的資料來源能聯通訪問。
在網路與資源配置步驟,選擇資料來源為Tablestore,並選擇資料來源名稱為步驟一:新增Table Store資料來源中新增的來源資料源。
選擇資源群組。
選擇資源群組後,系統會顯示資源群組的地區、規格等資訊以及自動化的測試資源群組與所選資料來源之間連通性。
選擇資料去向為OSS,並選擇資料來源名稱為步驟二:新增OSS資料來源中新增的目的資料來源。
系統會自動化的測試資源群組與所選資料來源之間連通性。
測試可連通後,單擊下一步。
配置任務。
您可以通過嚮導模式或者指令碼模式配置同步任務,請根據實際需要選擇。
(推薦)嚮導模式
在配置任務步驟的配置資料來源與去向地區,根據實際配置資料來源和資料去向。
資料來源配置
參數 | 說明 |
表 | Tablestore中的資料表名稱。 |
主鍵區間分布(起始) | 資料讀取的起始主鍵和結束主鍵,格式為JSON數組。 起始主鍵和結束主鍵需要是有效主鍵或者是由INF_MIN和INF_MAX類型組成的虛擬點,虛擬點的列數必須與主鍵相同。 其中INF_MIN表示無限小,任何類型的值都比它大;INF_MAX表示無限大,任何類型的值都比它小。 資料表中的行按主鍵從小到大排序,讀取範圍是一個左閉右開的區間,返回的是大於等於起始主鍵且小於結束主鍵的所有的行。 假設表包含pk1(String類型)和pk2(Integer類型)兩個主鍵列。 如果需要匯出全表資料,則配置樣本如下: 主鍵區間分布(起始)的配置樣本 [
{
"type": "INF_MIN"
},
{
"type": "INF_MIN"
}
]
主鍵區間分布(結束)的配置樣本 [
{
"type": "INF_MAX"
},
{
"type": "INF_MAX"
}
]
如果需要匯出pk1="tablestore" 的行,則配置樣本如下: 主鍵區間分布(起始)的配置樣本 [ 。
{
"type": "STRING",
"value": "tablestore"
},
{
"type": "INF_MIN"
}
]
主鍵區間分布(結束)的配置樣本 [
{
"type": "STRING",
"value": "tablestore"
},
{
"type": "INF_MAX"
}
]
|
主鍵區間分布(結束) |
切分配置資訊 | 自訂切分配置資訊,普通情況下不建議配置。當Tablestore資料存放區發生熱點,且使用Tablestore Reader自動切分的策略不能生效時,建議使用自訂的切分規則。切分指定的是在主鍵起始和結束區間內的切分點,僅配置切分鍵,無需指定全部的主鍵。格式為JSON數組。 |
資料去向配置
參數 | 說明 |
文本類型 | 寫入OSS的檔案類型,例如csv、txt。
說明 不同檔案類型支援的配置有差異,請以實際介面為準。 |
檔案名稱(含路徑) | 當設定文本類型為text、csv或orc時才能配置該參數。 OSS中的檔案名稱,支援帶有路徑,例如tablestore/20231130/myotsdata.csv 。 |
檔案路徑 | 當設定文本類型為parquet時才能配置該參數。 檔案在OSS上的路徑,例如tablestore/20231130/ 。 |
檔案名稱 | 當設定文本類型為parquet時才能配置該參數。 OSS中的檔案名稱。 |
資料行分隔符號 | 當設定文本類型為text或csv時才能配置該參數。 寫入OSS檔案時,列之間使用的分隔字元。 |
行分隔字元 | 當設定文本類型為text時才能配置才參數。 自訂的行分隔字元,用來分隔不同資料行。例如配置為 \u0001 。您需要使用資料中不存在的分隔字元作為行分隔字元。 如果要使用Linux或Windows平台的預設行分隔字元(\n 、\r\n )建議置空此配置,平台能自適應讀取。 |
編碼 | 當設定文本類型為text或csv時才能配置該參數。 寫入檔案的編碼配置。 |
null值 | 當設定文本類型為text、csv或orc時才能配置該參數。 來源資料源中可以表示為null的字串,例如配置為null,如果來源資料是null,則系統會視作null欄位。 |
時間格式 | 當設定文本類型為text或csv時才能配置該參數。 日期類型的資料寫入到OSS檔案時的時間格式,例如yyyy-MM-dd 。 |
首碼衝突 | 當設定的檔案名稱與OSS中已有檔案名稱衝突時的處理方法。取值範圍如下: |
切分檔案 | 當設定文本類型為text或csv時才能配置該參數。 寫入OSS檔案時,單個Object檔案的最大大小。單位為MB。最大值為100 GB。當檔案大小超過指定的切分檔案大小時,系統會產生新檔案繼續寫入資料,直到完成所有資料寫入。 |
寫為一個檔案 | 當設定文本類型為text或csv時才能配置該參數。 寫入資料到OSS時,是否寫單個檔案。預設寫多個檔案,當讀不到任何資料時,如果配置了檔案頭,則會輸出只包含檔案頭的空檔案,否則只輸出空檔案。 如果需要寫入到單個檔案,請選中寫為一個檔案複選框。此時當讀不到任何資料時, 不會產生空檔案。 |
首行輸出表頭 | 當設定文本類型為text或csv時才能配置該參數。 寫入檔案時第一行是否輸出表頭。預設不輸出表頭。如果需要在第一行輸出表頭,請選中首行輸出表頭複選框。 |
在欄位對應地區,單擊來源欄位後的表徵圖,手動編輯要同步到OSS的來源欄位,目標欄位無需配置。
在通道控制地區,配置任務運行參數,例如同步速率、髒資料同步策略等。關於參數配置的更多資訊,請參見配置通道。
單擊表徵圖,儲存配置。
說明 執行後續操作時,如果未儲存配置,則系統會出現儲存確認的提示,單擊確認即可。
指令碼模式
全量資料的同步需要使用到Tablestore(OTS) Reader和OSS Writer外掛程式。指令碼配置規則請參見Tablestore資料來源和OSS資料來源。
重要 任務轉為指令碼模式後,將無法轉為嚮導模式,請謹慎操作。
在配置任務步驟,單擊表徵圖,然後在彈出的對話方塊中單擊確認。
在指令碼配置頁面,請根據如下樣本完成配置。
重要 由於全量匯出一般是一次性的,所以無需配置自動調度參數。如果需要配置調度參數,請參見增量同步處理中的調度參數配置。
如果在指令碼配置中存在變數,例如存在${date}
,則需要在運行同步任務時設定變數的具體值。
為了便於理解,在配置樣本中增加了注釋內容,實際使用指令碼時請刪除所有注釋內容。
{
"type": "job", //不能修改。
"version": "2.0", //版本號碼,不能修改。
"steps": [
{
"stepType":"ots",//外掛程式名,不能修改。
"parameter":{
"datasource":"otssource",//Table Store資料來源名稱,請根據實際填寫。
"newVersion":"true",//使用新版otsreader。
"mode": "normal",// 行模式讀取資料。
"isTimeseriesTable":"false",// 配置該表為寬表(非時序表)。
"column":[//需要匯出到OSS的列名,不能設定為空白。
{
"name":"column1"//Tablestore中列名,此列需要匯入到OSS。
},
{
"name":"column2"
},
{
"name":"column3"
},
{
"name":"column4"
},
{
"name":"column5"
}
],
"range":{
"split":[ //用於配置Tablestore的資料表的分區資訊,可以加速匯出。一般情況下無需配置。
],
"end":[//Tablestore中結束主鍵資訊。如果需要匯出全量資料,此處請配置為INF_MAX;如果只需匯出部分資料,則按需配置。當資料表存在多個主鍵列時,此處end中需要配置對應主鍵列資訊。
{
"type":"STRING",
"value":"endValue"
},
{
"type":"INT",
"value":"100"
},
{
"type":"INF_MAX"
},
{
"type":"INF_MAX"
}
],
"begin":[//Tablestore中起始主鍵資訊。如果需要匯出全量資料,此處請配置為INF_MIN;如果只需匯出部分資料,則按需配置。當資料表存在多個主鍵列時,此處begin中需要配置對應主鍵列資訊。
{
"type":"STRING",
"value":"beginValue"
},
{
"type":"INT",
"value":"0"
},
{
"type":"INF_MIN"
},
{
"type":"INF_MIN"
}
]
},
"table":"datatable"//Tablestore中的資料表名稱。
},
"name":"Reader",
"category":"reader"
},
{
"stepType": "oss",//外掛程式名,不能修改。
"parameter": {
"nullFormat": "null", //定義null值的字串標識符方式,可以是Null 字元串。
"dateFormat": "yyyy-MM-dd HH:mm:ss",//日期格式。
"datasource": "osssource", //OSS資料來源名稱,請根據實際填寫。
"envType": 1,
"writeSingleObject": true, //將同步資料寫入單個oss檔案。
"writeMode": "truncate", //當同名檔案存在時系統進行的操作,全量匯出時請使用truncate,可選值包括truncate、append和nonConflict。truncate表示會清理已存在的同名檔案,append表示會增加到已存在的同名檔案內容後面,nonConflict表示當同名檔案存在時會報錯。
"encoding": "UTF-8", //編碼類別型。
"fieldDelimiter": ",", //每一列的分隔字元。
"fileFormat": "csv", //匯出的文本類型,取值範圍包括csv、text、parquet和orc。
"object": "tablestore/20231130/myotsdata.csv" //Object的首碼,無需包括Bucket名稱,例如tablestore/20231130/。如果是定時匯出,則此處需要使用變數,例如tablestore/${date},然後在配置調度參數時配置${date}的值。
},
"name": "Writer",
"category": "writer"
},
{
"name": "Processor",
"stepType": null,
"category": "processor",
"copies": 1,
"parameter": {
"nodes": [],
"edges": [],
"groups": [],
"version": "2.0"
}
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0" //當錯誤個數超過record個數時,匯入任務會失敗。
},
"speed": {
"concurrent": 2, //並發度。
"throttle": false
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
單擊表徵圖,儲存配置。
說明 執行後續操作時,如果未儲存指令碼,則系統會出現儲存確認的提示,單擊確認即可。
執行同步任務。
重要 全量資料一般只需要同步一次,無需配置調度屬性。
單擊表徵圖。
在參數對話方塊,選擇運行資源群組的名稱。
單擊運行。
運行結束後,在同步任務的作業記錄頁簽,單擊Detail log url對應的連結後。在任務的詳細作業記錄頁面,查看Current task status
對應的狀態。
當Current task status
的值為FINISH時,表示任務運行完成。
同步時序表資料的任務配置
在Data Integration節點下,雙擊開啟建立的離線同步任務節點。
配置同步網路連結。
選擇離線同步任務的資料來源、資料去向以及用於執行同步任務的資源群組,並測試連通性。
重要 資料同步任務的執行必須經過資源群組來實現,請選擇資源群組並保證資源群組與讀寫兩端的資料來源能聯通訪問。
在網路與資源配置步驟,選擇資料來源為Tablestore,並選擇資料來源名稱為步驟一:新增Table Store資料來源中新增的來源資料源。
選擇資源群組。
選擇資源群組後,系統會顯示資源群組的地區、規格等資訊以及自動化的測試資源群組與所選資料來源之間連通性。
選擇資料去向為OSS,並選擇資料來源名稱為步驟二:新增OSS資料來源中新增的目的資料來源
系統會自動化的測試資源群組與所選資料來源之間連通性。
測試可連通後,單擊下一步。
配置任務。
同步時序表資料時只支援使用指令碼模式進行任務配置。全量資料的同步需要使用到Tablestore(OTS) Reader和OSS Writer外掛程式。指令碼配置規則請參見Tablestore資料來源和OSS資料來源。
重要 任務轉為指令碼模式後,將無法轉為嚮導模式,請謹慎操作。
在配置任務步驟,單擊表徵圖,然後在彈出的對話方塊中單擊確認。
在指令碼配置頁面,請根據如下樣本完成配置。
重要 由於全量匯出一般是一次性的,所以無需配置自動調度參數。如果需要配置調度參數,請參見增量同步處理中的調度參數配置。
如果在指令碼配置中存在變數,例如存在${date}
,則需要在運行同步任務時設定變數的具體值。
為了便於理解,在配置樣本中增加了注釋內容,實際使用指令碼時請刪除所有注釋內容。
{
"type": "job",
"version": "2.0", //版本號碼,不能修改。
"steps": [
{
"stepType":"ots",//外掛程式名,不能修改。
"parameter":{
"datasource":"otssource",//Table Store資料來源名稱,請根據實際填寫。
"table": "timeseriestable",//時序表名稱。
// 讀時序資料mode必須為normal。
"mode": "normal",
// 讀時序資料newVersion必須為true。
"newVersion": "true",
// 配置該表為時序表。
"isTimeseriesTable":"true",
// 配置需要讀取時序資料的度量名稱,非必需。如果置空則表示讀取全表資料。
"measurementName":"measurement_1",
"column": [
// 度量名稱,name固定取值為_m_name。如果不需要匯出該列資料,則無需配置。
{
"name": "_m_name"
},
//資料來源名稱,name固定取值為_data_source。如果不需要匯出該列資料,則無需配置。
{
"name": "_data_source"
},
//資料點的時間戳記,單位為微秒。name固定取值為_time,type固定取值為INT。如果不需要匯出該列資料,則無需配置。
{
//列名。
"name": "_time"
//列類型。
"type":"INT"
},
//時間軸標籤。如果時間軸存在多個標籤,您可以配置多個標籤列資訊。
{
//時間軸標籤名稱,請根據實際填寫。
"name": "tagA",
//是否為時間軸標籤。預設值為false,如果要指定列為標籤,則需要設定此參數為true。
"is_timeseries_tag":"true"
},
{
"name": "double_0",
"type":"DOUBLE"
},
{
"name": "string_0",
"type":"STRING"
},
{
"name": "long_0",
"type":"INT"
},
{
"name": "binary_0",
"type":"BINARY"
},
{
"name": "bool_0",
"type":"BOOL"
}
]
},
"name":"Reader",
"category":"reader"
},
{
"stepType": "oss",//外掛程式名,不能修改。
"parameter": {
"nullFormat": "null", //定義null值的字串標識符方式,可以是Null 字元串。
"dateFormat": "yyyy-MM-dd HH:mm:ss",//日期格式。
"datasource": "osssource", //OSS資料來源名稱,請根據實際填寫。
"envType": 1,
"writeSingleObject": true, //將同步資料寫入單個oss檔案。
"writeMode": "truncate", //當同名檔案存在時系統進行的操作,全量匯出時請使用truncate,可選值包括truncate、append和nonConflict。truncate表示會清理已存在的同名檔案,append表示會增加到已存在的同名檔案內容後面,nonConflict表示當同名檔案存在時會報錯。
"encoding": "UTF-8", //編碼類別型。
"fieldDelimiter": ",", //每一列的分隔字元。
"fileFormat": "csv", //匯出的文本類型,取值範圍包括csv、text、parquet和orc。
"object": "tablestore/20231130/myotsdata.csv" //Object的首碼,無需包括Bucket名稱,例如tablestore/20231130/。如果是定時匯出,則此處需要使用變數,例如tablestore/${date},然後在配置調度參數時配置${date}的值。
},
"name": "Writer",
"category": "writer"
},
{
"name": "Processor",
"stepType": null,
"category": "processor",
"copies": 1,
"parameter": {
"nodes": [],
"edges": [],
"groups": [],
"version": "2.0"
}
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0" //當錯誤個數超過record個數時,匯入任務會失敗。
},
"speed": {
"concurrent": 2, //並發度。
"throttle": false
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
單擊表徵圖,儲存配置。
說明 執行後續操作時,如果未儲存指令碼,則系統會出現儲存確認的提示,單擊確認即可。
執行同步任務。
重要 全量資料一般只需要同步一次,無需配置調度屬性。
單擊表徵圖。
在參數對話方塊,選擇運行資源群組的名稱。
單擊運行。
運行結束後,在同步任務的作業記錄頁簽,單擊Detail log url對應的連結後。在任務的詳細作業記錄頁面,查看Current task status
對應的狀態。
當Current task status
的值為FINISH時,表示任務運行完成。
步驟五:查看匯出到OSS中的資料
登入OSS管理主控台。
在Bucket列表頁面,找到目標Bucket後,單擊Bucket名稱。
在檔案清單頁簽,選擇相應檔案,下載後可查看內容是否符合預期。
相關文檔
將Tablestore的全量資料匯出到OSS後,您還可以將Tablestore的增量資料同步到OSS儲存。具體操作,請參見增量同步處理。
將Tablestore的全量資料匯出到OSS後,如果需要快速清理Tablestore表中不再使用的歷史資料,您可以通過資料生命週期功能實現。更多資訊,請參見資料生命週期(資料表)或者更新時序表資料生命週期(時序表)。
如果要下載匯出的OSS檔案到本地,您可以使用OSS控制台、命令列工具ossutil等工具直接進行下載。更多資訊,請參見簡單下載。
為了防止由於誤刪、惡意篡改等導致重要資料不可用,您可以使用Tablestore資料備份功能備份執行個體中寬表資料,並在資料丟失或受損時及時恢複。更多資訊,請參見資料備份概述。
如果要實現Tablestore資料表的冷熱資料階層式存放區、全量資料備份Tablestore資料以及大規模即時資料分析,您可以使用Tablestore的資料湖投遞功能實現。更多資訊,請參見資料湖投遞。