全部產品
Search
文件中心

Tablestore:快速入門

更新時間:May 13, 2022

通過Tablestore控制台建立投遞任務,將Tablestore資料表中的資料投遞到OSS Bucket中儲存。

前提條件

已開通OSS服務且在Tablestore執行個體所在地區建立Bucket,詳情請參見開通OSS服務

說明

資料湖投遞支援投遞到和Tablestore相同地區的任意OSS Bucket中。如需投遞到其他數倉儲存(例如MaxCompute),請提交工單申請。

注意事項

  • 目前支援使用資料湖投遞功能的地區有華東1(杭州)、華東2(上海)、華北2(北京)和華北3(張家口)。

  • 資料湖投遞不支援同步刪除操作,Tablestore中的刪除操作在資料投遞時會被忽略,已投遞到OSS中的資料不會被刪除。

  • 建立資料投遞任務時存在最多1分鐘的初始化時間。

  • 資料同步存在延遲,寫入速率穩定時,延遲在3分鐘內。資料同步的P99延遲在10分鐘內。

    說明

    P99延遲表示過去10秒內最慢的1%的請求的平均延遲。

建立投遞任務

  1. 登入Tablestore控制台

  2. 選擇地區,單擊執行個體名稱或者執行個體操作列的執行個體管理

  3. 執行個體管理頁面,單擊資料湖投遞

  4. (可選)建立服務關聯角色AliyunServiceRoleForOTSDataDelivery。

    首次配置資料湖投遞時,需要建立Tablestore服務關聯角色AliyunServiceRoleForOTSDataDelivery,該角色用於授權Tablestore服務寫入OSS Bucket的許可權,具體操作,請參見Tablestore服務關聯角色

    說明

    關於服務關聯角色的更多資訊,請參見服務關聯角色

    1. 資料湖投遞頁面,單擊資料湖投遞關聯角色說明

    2. 資料湖投遞服務關聯角色對話方塊,查看相關說明,單擊確認建立

  5. 建立投遞任務。

    1. 資料湖投遞頁面,單擊建立投遞任務

    2. 建立投遞任務對話方塊,配置投遞參數。

      參數

      說明

      任務名稱

      投遞任務名稱。

      名稱只能包含英文小寫字母(a~z)、數字和虛線(-),開頭和結尾必須為英文小寫字母或數字,且長度為3~16字元。

      目標region

      Tablestore執行個體和OSS Bucket所在地區。

      目標Table

      Tablestore資料表名稱。

      目標OSS Bucket

      OSS Bucket名稱。

      注意

      該OSS Bucket必須已存在且與Tablestore執行個體在同一地區。

      投遞路徑(首碼)

      OSS Bucket中的目錄首碼,將Tablestore的資料投遞到該OSS Bucket目錄中。投遞路徑中支援引用$yyyy、$MM、$dd、$HH、$mm五種時間變數。更多資訊,請參見按時間分區

      • 當投遞路徑中引用時間變數時,可以按資料的寫入時間動態產生OSS目錄,實現hive partition naming style的資料時間分區,從而按照時間分區組織OSS中的檔案分布。

      • 當投遞路徑中不引用時間變數時,所有檔案會被投遞到固定的OSS首碼目錄中。

      投遞類型

      投遞任務的類型,包括如下選項:

      • 增量:只同步增量資料。

      • 全量:一次性全表掃描資料同步。

      • 全量&增量:全量資料同步完成後,再同步增量資料

      其中增量資料同步時可以擷取最新投遞時間和瞭解當前投遞狀態。

      投遞檔案格式

      投遞的資料以Parquet列存格式儲存,資料湖投遞預設使用PLAIN編碼方式,PLAIN編碼方式支援任意類型資料。

      Schema產生方式

      指定需要投遞的資料列,可以選擇任意欄位以任意順序、名稱寫入列存檔案,OSS的列存資料會按Schema數組中的資料列先後順序分布。

      根據選擇的Schema產生方式配置投遞Schema。

      • Schema產生方式配置為手動錄入時,需要手動設定投遞欄位的源表欄位、目標欄位名和目標欄位類型。

      • Schema產生方式配置為自動產生時,系統會自動匹配識別投遞欄位。

      注意

      投遞資料的欄位類型必須與資料來源的欄位類型匹配,否則會作為髒資料丟棄。關於欄位類型映射的更多資訊,請參見資料格式映射

      配置投遞Schema時,可以執行如下操作:

      • 單擊新增投遞欄位,新增投遞欄位。

      • 操作列單擊表徵圖down11up表徵圖,調整投遞欄位的順序。

      • 操作列單擊delete表徵圖,刪除投遞欄位。

      Schema配置

  6. 單擊確定

    建表語句對話方塊,您可以查看自動產生的DLA外表和EMR外表的建表語句,直接複製建表語句可以在EMR中快速建立外表,便於訪問OSS中的資料。

    建立投遞任務後,您可以執行如下操作:

    • 查看資料投遞的詳細資料,例如任務名稱、表名、投遞OSS Bucket、首碼路徑、最新同步時間、狀態等。

    • 查看或複製建表語句。

      操作列單擊建表語句,可以查看或複製通過計算分析引擎(例如EMR)建立外表的建表語句,具體操作,請分別使用EMR

    • 查看投遞的錯誤資訊。

      當OSS Bucket、投遞許可權相關配置不正確時,資料投遞會無法成功完成,此時在投遞任務的狀態介面可以查看相關的錯誤資訊。錯誤資訊的處理詳情請參見錯誤處理

    • 刪除投遞任務。

      操作列單擊刪除,可以刪除投遞任務。刪除處於初始化階段的投遞任務時,系統會返回錯誤,請稍後重試刪除。

查看OSS資料

投遞任務初始化完成且有資料投遞後,可以通過OSS的控制台、API或者SDK,計算分析引擎(例如EMR等)查看投遞到OSS的資料,具體操作,請參見檔案概覽

OSS Object的地址格式如下所示。

oss://BucketName/TaskPrefix/TaskName_ConcurrentID_TaskPrefix__SequenceID

其中BucketName為Bucket名稱,TaskPrefix為目錄首碼,TaskName為投遞任務名稱,ConcurrentID為投遞系統內部的並發編號,從0開始流量增大時任務並發會自動增加,TaskPrefix為任務的首碼資訊,SequenceID為投遞的檔案編號,從1開始遞增。

按時間分區

資料投遞支援提取資料寫入Tablestore的時間,寫入時間$yyyy(年份數字)、$MM(兩位月份數字)、$dd(兩位日期數字)、$HH(兩位小時數字)、$mm(兩位分鐘數字)轉化後可以作為投遞到OSS Bucket中的目錄首碼。

說明

OSS中的檔案大小不宜過小,推薦4 MB或者更大,同時計算分析引擎載入OSS時,分區越多,載入事務的執行時間也會越長,因此時間分區粒度不宜過細,在多數即時寫入流量情境中,宜按天或者按小時分區,不需要到分鐘的分區粒度。

以2020年08月31日16點03分寫入Tablestore的資料投遞為例,OSS中該日誌的第一個資料檔案目錄,根據投遞首碼配置,不同的檔案路徑請參見下表。

OSS Bucket

TaskName

投遞首碼

OSS實際檔案路徑

myBucket

testTask

myPrefix

oss://myBucket/myPrefix/testTask_0_myPrefix__1

myBucket

testTaskTimeParitioned

myPrefix/$yyyy/$MM/$dd/$HH/$mm

oss://myBucket/myPrefix/2020/08/31/16/03/testTaskTimeParitioned_0_myPrefix_2020_08_31_16_03__1

myBucket

testTaskTimeParitionedHiveNamingStyle

myPrefix/year=$yyyy/month=$MM/day=$dd

oss://myBucket/myPrefix/year=2020/month=08/day=31/testTaskTimeParitionedHiveNamingStyle_0_myPrefix_year=2020_month=08

myBucket

testTaskDs

ds=$yyyy$MM$dd

oss://myBucket/ds=20200831/testTaskDs_0_ds=20200831__0

資料格式映射

Parquet Logical Type

Tablestore資料類型

Boolean

Boolean

Int64

Int64

Double

Double

UTF8

String

錯誤處理

錯誤資訊

錯誤原因

處理方法

UnAuthorized

沒有許可權。

確認RAM中的服務關聯角色AliyunServiceRoleForOTSDataDelivery是否存在。

當服務關聯角色不存在時需要重新建立投遞任務觸發Tablestore為使用者建立該角色。

InvalidOssBucket

OSS Bucket不存在。

  • 確認OSS Bucket所在地區是否與Tablestore執行個體相同。

  • 確認OSS Bucket是否存在。

當OSS Bucket重新建立後,所有資料會重試寫入OSS Bucket,投遞進度也會正常更新。