全部產品
Search
文件中心

Tablestore:匯出全量資料到MaxCompute

更新時間:Nov 06, 2024

如果需要使用MaxCompute備份Tablestore資料或者遷移Tablestore資料到MaxCompute中使用,您可以通過在DataWorksData Integration控制台建立和配置離線同步任務來實現全量資料匯出。全量資料匯出到MaxCompute後,您可以使用DataWorks資料分析功能查看和分析匯出到MaxCompute中的資料。

注意事項

Tablestore的欄位名稱大小寫敏感,請確保MaxComputer中的欄位名稱與Tablestore中的欄位名稱一致。

步驟一:新增Tablestore資料來源

Tablestore資料庫添加為資料來源,具體步驟如下:

  1. 進入Data Integration頁面。

    1. 以專案系統管理員身份登入DataWorks控制台

    2. 在左側導覽列,單擊工作空間列表後,選擇地區。

    3. 工作空間列表頁面,在目標工作空間操作列選擇快速進入>Data Integration

  2. 在左側導覽列,單擊資料來源

  3. 資料來源列表頁面,單擊新增資料來源

  4. 新增資料來源對話方塊,找到Tablestore區塊,單擊Tablestore

  5. 新增OTS資料來源對話方塊,根據下表配置資料來源參數。

    參數

    說明

    資料來源名稱

    資料來源名稱必須以字母、數字、底線(_)組合,且不能以數字和底線(_)開頭。

    資料來源描述

    對資料來源進行簡單描述,不得超過80個字元。

    Endpoint

    Tablestore執行個體的服務地址。更多資訊,請參見服務地址

    如果Tablestore執行個體和目標資料來源的資源在同一個地區,填寫VPC地址;如果Tablestore執行個體和目標資料來源的資源不在同一個地區,填寫公網地址。

    Table Store執行個體名稱

    Tablestore執行個體的名稱。更多資訊,請參見執行個體

    AccessKey ID

    阿里雲帳號或者RAM使用者的AccessKey ID和AccessKey Secret。擷取方式請參見建立AccessKey

    AccessKey Secret

  6. 測試資源群組連通性。

    建立資料來源時,您需要測試資源群組的連通性,以保證同步任務使用的資源群組能夠與資料來源連通,否則將無法正常執行資料同步任務。

    重要

    資料同步時,一個任務只能使用一種資源群組。資源群組列表預設顯示僅Data Integration公用資源群組。為確保資料同步的穩定性和效能要求,推薦使用獨享Data Integration資源群組。

    1. 單擊前往購買進行全新建立並綁定資源群組到工作空間或單擊綁定已購資源群組為工作空間綁定已有資源群組。具體操作,請參見新增和使用獨享Data Integration資源群組

    2. 待資源群組啟動成功後,單擊相應資源群組連通狀態(生產環境)列的測試連通性

      當連通狀態顯示為可連通時,表示連通成功。

  7. 測試連通性通過後,單擊完成

    在資料來源列表中,可以查看建立的資料來源。

步驟二:新增MaxCompute資料來源

具體操作與步驟一類似,將MaxCompute添加為資料來源。

  1. 資料來源列表頁面,單擊新增資料來源

  2. 新增資料來源對話方塊,找到MaxCompute區塊,單擊MaxCompute

  3. 新增MaxCompute資料來源對話方塊中配置參數,並測試資源群組連通性,再單擊完成。具體操作,請參見建立MaxCompute資料來源

    重要
    • 資料同步時,一個任務只能使用一種資源群組。資源群組列表預設僅顯示獨享Data Integration資源群組,為確保資料同步的穩定性和效能要求,推薦使用獨享Data Integration資源群組。

    • 如果未建立資源群組,請單擊前往購買建立獨享Data Integration資源群組。具體操作,請參見新增和使用獨享Data Integration資源群組

步驟三:建立同步任務節點

  1. 進入資料開發頁面。

    1. 以專案系統管理員身份登入DataWorks控制台

    2. 選擇地區,在左側導覽列,單擊工作空間列表

    3. 工作空間列表頁面,在目標工作空間操作列選擇快速進入>資料開發

  2. 在DataStudio控制台的資料開發頁面,單擊商務程序節點下的目標商務程序。

    如果需要建立商務程序,請參見建立商務程序

  3. Data Integration節點上右鍵選擇建立節點 > 離線同步

  4. 建立節點對話方塊,選擇路徑並填寫節點名稱。

  5. 單擊確認

    Data Integration節點下會顯示建立的離線同步節點。

步驟四:配置離線同步任務並啟動

配置Tablestore到MaxCompute的同步任務,具體步驟如下:

  1. Data Integration節點下,雙擊開啟建立的離線同步任務節點。

  2. 配置同步網路連結。

    選擇離線同步任務的資料來源、資料去向以及用於執行同步任務的資源群組,並測試連通性。

    重要

    資料同步任務的執行必須經過資源群組來實現,請選擇資源群組並保證資源群組與讀寫兩端的資料來源能聯通訪問。

    1. 網路與資源配置步驟,選擇資料來源Tablestore,並選擇資料來源名稱步驟一:新增Table Store資料來源中新增的來源資料源。

    2. 選擇資源群組。

      選擇資源群組後,系統會顯示資源群組的地區、規格等資訊以及自動化的測試資源群組與所選資料來源之間連通性。

      重要

      請與新增資料來源時選擇的資源群組保持一致。

    3. 選擇資料去向MaxCompute(ODPS),並選擇資料來源名稱步驟二:新增MaxCompute資料來源中新增的目的資料來源。

      系統會自動化的測試資源群組與所選資料來源之間連通性。

    4. 測試可連通後,單擊下一步

  3. 配置任務。

    您可以通過嚮導模式或者指令碼模式配置任務,請根據實際需要選擇。

    (推薦)嚮導模式

    1. 配置任務步驟的配置資料來源與去向地區,根據實際配置資料來源和資料去向。

      資料來源配置

      參數

      說明

      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數組。

      資料去向配置

      參數

      說明

      Tunnel資源群組

      即Tunnel Quota,預設選擇“公用傳輸資源”,即MC的免費quota。

      說明

      如果獨享tunnel quota因欠費或到期不可用,任務在運行中將會自動切換為“公用傳輸資源”。

      MaxCompute中的表名稱。

      分區資訊

      如果您每日增量資料限定在對應日期的分區中,可以使用分區做每日增量,比如配置分區pt值為${bizdate}

      寫入模式

      資料寫入表中的模式。取值範圍如下:

      • 寫入前保留已有資料(Insert Into):直接向表或靜態分區中插入資料。

      • 寫入前清理已有資料(Insert Overwrite):先清空表中的原有資料,再向表或靜態分區中插入資料。

      Null 字元串轉為Null寫入

      如果源頭資料為空白字串,在向目標MaxCompute列寫入時是否轉為Null值寫入。

      同步完成才可見

      單擊進階配置後才會顯示該參數。

      同步到MaxCompute中的資料是否在同步完成後才能被查詢到。

    2. 欄位對應地區,分別單擊來源欄位和目標欄位後的image.png表徵圖,手動編輯來源欄位和目標欄位。

      重要

      請確保來源欄位和目標欄位的數量和類型相匹配。

      來源欄位中的欄位需要以JSON格式表示,例如{"name":"id","type":"STRING"}。目標欄位中的欄位直接填寫欄位名稱即可。一行表示一個欄位,欄位對應按照同行映射執行。

      image.png

    3. 通道控制地區,配置任務運行參數,例如任務期望最大並發數、同步速率、髒資料同步策略、分散式處理能力等。關於參數配置的更多資訊,請參見配置通道

    4. 單擊image.png表徵圖,儲存配置。

      說明

      執行後續操作時,如果未儲存配置,則系統會出現儲存確認的提示,單擊確認即可。

    指令碼模式

    全量資料的同步需要使用到Tablestore(OTS) Reader和MaxCompute Writer外掛程式。指令碼配置規則請參見Tablestore資料來源MaxCompute資料來源

    重要

    任務轉為指令碼模式後,將無法轉為嚮導模式,請謹慎操作。

    1. 配置任務步驟,單擊image.png表徵圖,然後在彈出的對話方塊中單擊確認

    2. 在指令碼配置頁面,請根據如下樣本完成配置。

      重要
      • 由於全量匯出一般是一次性的,所以無需配置自動調度參數。

      • 如果在指令碼配置中存在變數,例如存在${date},則需要在運行同步任務時設定變數的具體值。

      • 為了便於理解,在配置樣本中增加了注釋內容,實際使用指令碼時請刪除所有注釋內容。

      {
          "type": "job",
          "version": "2.0",
          "steps": [
              {
                  "stepType": "ots", #外掛程式名稱,不能修改。
                  "parameter": {
                      "datasource": "",  #Table Store資料來源名稱,請根據實際填寫。
                      "column": [ #需要匯出的Table Store列名。
                          {
                              "name": "column1"
                          },
                          {
                              "name": "column2"
                          },
                          {
                              "name": "column3"
                          },
                          {
                              "name": "column4"
                          },
                          {
                              "name": "column5"
                          }
                      ],
                      "range": {
                          "split": [ #用於配置Tablestore的資料表的分區資訊,可以加速匯出。一般情況下無需配置。
                              {
                                  "type": "INF_MIN"
                              },
                              {
                                  "type": "STRING",
                                  "value": "splitPoint1"
                              },
                              {
                                  "type": "STRING",
                                  "value": "splitPoint2"
                              },
                              {
                                  "type": "STRING",
                                  "value": "splitPoint3"
                              },
                              {
                                  "type": "INF_MAX"
                              }
                          ],
                          "end": [ 
                              {
                                  "type": "INF_MAX" #Tablestore中第一列主鍵的結束位置。如果需要匯出全量資料,此處請配置為INF_MAX;如果只需匯出部分資料,則按需配置。當資料表存在多個主鍵列時,此處end中需要配置對應主鍵列資訊。
                              },
                              {
                                  "type": "INF_MAX"
                              },
                              {
                                  "type": "STRING",
                                  "value": "end1"
                              },
                              {
                                  "type": "INT",
                                  "value": "100"
                              }
                          ],
                          "begin": [ 
                              {
                                  "type": "INF_MIN" #Tablestore中第一列主鍵的起始位置。如果需要匯出全量資料,此處請配置為INF_MIN;如果只需匯出部分資料,則按需配置。當資料表存在多個主鍵列時,此處begin中需要配置對應主鍵列資訊。
                              },
                              {
                                  "type": "INF_MIN"
                              },
                              {
                                  "type": "STRING",
                                  "value": "begin1"
                              },
                              {
                                  "type": "INT",
                                  "value": "0"
                              }
                          ]
                      },
                      "table": "" #Tablestore中的資料表名稱。
                  },
                  "name": "Reader",
                  "category": "reader"
              },
              {
                  "stepType": "odps", #外掛程式名稱,不能修改。
                  "parameter": {
                      "partition": "", #如果表為分區表,則必填。如果表為非分區表,則不能填寫。需要寫入資料表的分區資訊,必須指定到最後一級分區。
                      "truncate": true, #是否清空之前的資料。
                      "datasource": "", #MaxCompute資料來源名稱,請根據實際填寫。
                      "column": [ #MaxCompute中的列名,列名順序必須對應TableStore中的列名順序。
                          "*"
                      ],
                      "table": "" #MaxCompute中的表名,請提前建立完成,否則任務執行會失敗。
                  },
                  "name": "Writer",
                  "category": "writer"
              },
              {
                  "name": "Processor",
                  "stepType": null,
                  "category": "processor",
                  "parameter": {}
              }
          ],
          "setting": {
              "executeMode": null,
              "errorLimit": {
                  "record": "0" #當錯誤個數超過record個數時,匯入任務會失敗。
              },
              "speed": {
                  "throttle":true, #當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                  "concurrent":1 #作業並發數。
                  "mbps":"12" #限流。
              }
          },
          "order": {
              "hops": [
                  {
                      "from": "Reader",
                      "to": "Writer"
                  }
              ]
          }
      }

      您可以通過begin和end來設定匯出的資料範圍,假設表包含pk1(String類型)和pk2(Integer類型)兩個主鍵列。

      • 如果需要匯出全表資料,則配置樣本如下:

        "begin": [ # 需要匯出資料的起始位置。
          {
            "type": "INF_MIN"
          },
          {
            "type": "INF_MIN"
          }
        ],
        "end": [  # 需要匯出資料的結束位置。
          {
            "type": "INF_MAX"
          },
          {
            "type": "INF_MAX"
          }
        ],
      • 如果需要匯出pk1="tablestore" 的行,則配置樣本如下:

        "begin": [ # 匯出資料的起始位置。
          {
            "type": "STRING",
            "value": "tablestore"
          },
          {
            "type": "INF_MIN"
          }
        ],
        "end": [  # 匯出資料的結束位置。
          {
            "type": "STRING",
            "value": "tablestore"
          },
          {
            "type": "INF_MAX"
          }
        ],
    3. 單擊image.png表徵圖,儲存配置。

      說明

      執行後續操作時,如果未儲存指令碼,則系統會出現儲存確認的提示,單擊確認即可。

  4. 執行同步任務。

    重要

    全量資料一般只需要同步一次,無需配置調度屬性。

    1. 單擊1680170333627-a1e19a43-4e2a-4340-9564-f53f2fa6806e表徵圖。

    2. 參數對話方塊,選擇運行資源群組的名稱。

    3. 單擊運行

      運行結束後,在同步任務的作業記錄頁簽,單擊Detail log url對應的連結後。在任務的詳細作業記錄頁面,查看Current task status對應的狀態。

      Current task status的值為FINISH時,表示任務運行完成。

步驟五:查看匯入到MaxCompute中的資料

您可使用開發ODPS SQL任務建立臨時查詢功能,通過表操作查詢MaxCompute表的資料。

相關文檔