全部產品
Search
文件中心

ApsaraDB for ClickHouse:從MaxCompute外表匯入(20.3及以上)

更新時間:Apr 02, 2025

本文介紹如何將資料通過阿里雲MaxCompute外表方式匯入至雲資料庫ClickHouse

注意事項

  • 雲資料庫ClickHouse社區相容版叢集的核心版本為20.3及以上。

  • MaxCompute服務為付費服務。計費詳情,請參見MaxCompute計費方式

  • 為了確保雲資料庫ClickHouse與MaxCompute服務之間網路通暢,您需要採用阿里雲VPC網路訪問方式,且MaxCompute必須與您的雲資料庫ClickHouse叢集在同一地區。

前提條件

  • 已開通MaxCompute服務。如何開通,請參見開通MaxCompute

  • 已建立MaxCompute專案,且與雲資料庫ClickHouse叢集在同一地區。如何建立,請參見建立MaxCompute專案

  • 如果RAM使用者使用MaxCompute,需要阿里雲主帳號為RAM使用者授權。如何授權,請參見準備RAM使用者

操作步驟

  1. 建立MaxCompute外表。

    1. 登入MaxCompute控制台

    2. 在左側導覽列,單擊DataWorks > 資料開發

    3. 資料開發頁面,滑鼠移至上方至建立表徵圖,單擊建立表 > MaxCompute >

    4. 建立表對話方塊中,輸入表名,本文以maxcompute表名為例。

    5. 單擊建立

    6. 基本屬性地區,配置各項參數。

      基本屬性

      參數含義如下。

      配置項

      說明

      中文名

      定義表的中文名稱。

      主題

      DataWorks的主題相當於檔案夾。定義表所屬的一級檔案夾與二級檔案夾。您可基於業務用途對錶進行歸類,將同類表掛載至相同檔案夾中。

      說明

      一級主題、二級主題僅為DataWorks上表管理檔案夾的呈現形式,旨在方便您更好地管理表。 後續在表管理頁面可通過主題快速尋找當前表,如果沒有可用的主題,可參考定義表主題建立。

    7. 單擊工具列中的DDL

    8. DDL對話方塊中,輸入如下建表語句,單擊產生表結構

      CREATE TABLE IF NOT EXISTS maxcompute
      (    
      v1  INT,    
      v2  INT                
      )
      PARTITIONED BY
      (
          v3 STRING                   
      );
    9. 分別單擊提交到開發環境提交到生產環境

  2. 寫入MaxCompute外表資料。

    1. 資料開發頁面,單擊左側導覽列的臨時查詢

    2. 滑鼠移至上方至建立表徵圖,單擊建立 > ODPS SQL

    3. 建立節點對話方塊中,選擇路徑並輸入名稱

    4. 單擊確認

    5. 在節點的編輯頁面,輸入如下語句,為MaxCompute外表寫入資料。

      insert into maxcompute PARTITION (v3='2021') values (1,2),(2,3);
    6. 單擊工具列中的執行表徵圖。

    7. 參數視窗,選擇公用調度資源群組,單擊確定

    8. MaxCompute計算成本估計視窗,確認預估費用,單擊運行

  3. 建立雲資料庫ClickHouse表。

    1. 登入雲資料庫ClickHouse控制台

    2. 叢集列表頁面,單擊目的地組群ID。

    3. 單擊右上方導覽列的登入資料庫

    4. 輸入建表語句並單擊執行(F8)

      建表文法如下。

      CREATE TABLE <table_name> [on cluster default]
      (
      'col_name1' col_type1,
      'col_name2' col_type2,
      ...
      )
      ENGINE = MaxCompute('<tunnel-endpoint>', '<project-name>', '<table-name>', '<partition-spec>', '<access-key-id>', '<access-key-secret>',<read-thread-num>, '<quota>');
      說明

      如果您使用的表引擎為MaxComputeRaw,請更改建表文法中的tunnel-endpointodps-endpoint,即VPC網路Endpoint。如何查看VPC網路Endpoint,請參見Endpoint

      參數說明如下。

      參數名

      描述

      table_name

      表名。

      col_name1,col_name2

      列名。

      col_type1,col_type2

      列類型。

      說明

      雲資料庫ClickHouse表的結構類型需與MaxCompute對應。具體映射關係,請參見資料類型映射

      tunnel-endpoint

      Tunnel服務的串連地址Tunnel Endpoint。

      為了確保雲資料庫ClickHouse與MaxCompute服務之間網路通暢,您需要採用阿里雲VPC網路訪問方式,且MaxCompute必須與您的雲資料庫ClickHouse叢集在同一地區。

      說明

      如何查看VPC網路的tunnel-endpoint,請參見Endpoint

      project-name

      MaxCompute專案名稱。

      table-name

      MaxCompute外表名。

      partition-spec

      MaxCompute分區。

      access-key-id

      訪問MaxCompute專案的AccessKey ID。

      access-key-secret

      訪問MaxCompute專案的AccessKey Secret。

      read-thread-num(可選)

      讀取MaxCompute表時單個分區的並發數,預設值是1。

      quota(可選)

      MaxCompute計算資源的單元,預設共用Quota。

      建表語句如下。

      CREATE TABLE default.maxcomputetest ON CLUSTER default (
      v1 Int32, 
      v2 Int32
      ) ENGINE = MaxCompute('http://dt.cn-hangzh******.aliyun-inc.com', 'ckfwt', 'maxcompute', 'v3=2021', 'LTAI****************', 'yourAccessKeySecret');
  4. 查詢雲資料庫ClickHouse表。

    1. 登入雲資料庫ClickHouse控制台

    2. 叢集列表頁面,單擊目的地組群ID。

    3. 單擊右上方導覽列的登入資料庫

    4. 輸入查詢語句並單擊執行(F8)

      SELECT * FROM maxcomputetest;

      查詢結果如下。查詢

資料類型映射

MaxCompute類型

ClickHouse類型

Boolean

UInt8

Tinyint

UInt8, Int8

Smalllint

UInt16, Int16

Int

UInt32, Int32

Bigint

UInt64, Int64

Float

Float32

Double

Float64

Char

String

Varchar

String

Binary

String

String

String

Date

Date

Datetime

Datetime

UUID

暫不支援

INTERVAL

暫不支援

Decimal

String

Timestamp

暫不支援

Map

Nested(Nullable(keyType), Nullable(valueType))。目前只支援一層非嵌套的Map結構。

例如MaxCompute中map<string, string>對應雲資料庫ClickHouse中的類型是:Nested(k Nullable(String), v Nullable(String))

說明

Nested內部的類型必須是Nullable,否則建表會報錯。

Array

Array(Nullable(Type))。目前只支援一層非嵌套的Array結構。

例如MaxCompute中array<int>對應雲資料庫ClickHouse中的類型是:Array(Nullable(Int32))

說明

Array內部的類型必須是Nullable,否則建表會報錯。

Struct

Tuple(Nullable(Type))。目前只支援一層非嵌套的Struct結構。

例如MaxCompute中struct<x:int, y:string>對應雲資料庫ClickHouse中的類型是:Tuple(Nulable(Int32), Nullable(String))

說明

Tuple內部的類型必須是Nullable,否則建表會報錯。