本文介紹如何將資料通過阿里雲MaxCompute外表方式匯入至雲資料庫ClickHouse。
注意事項
雲資料庫ClickHouse社區相容版叢集的核心版本為20.3及以上。
MaxCompute服務為付費服務。計費詳情,請參見MaxCompute計費方式。
為了確保雲資料庫ClickHouse與MaxCompute服務之間網路通暢,您需要採用阿里雲VPC網路訪問方式,且MaxCompute必須與您的雲資料庫ClickHouse叢集在同一地區。
前提條件
已開通MaxCompute服務。如何開通,請參見開通MaxCompute。
已建立MaxCompute專案,且與雲資料庫ClickHouse叢集在同一地區。如何建立,請參見建立MaxCompute專案。
如果RAM使用者使用MaxCompute,需要阿里雲主帳號為RAM使用者授權。如何授權,請參見準備RAM使用者。
操作步驟
建立MaxCompute外表。
在左側導覽列,單擊。
在資料開發頁面,滑鼠移至上方至
表徵圖,單擊。在建立表對話方塊中,輸入表名,本文以maxcompute表名為例。
單擊建立。
在基本屬性地區,配置各項參數。
單擊工具列中的DDL。
在DDL對話方塊中,輸入如下建表語句,單擊產生表結構。
CREATE TABLE IF NOT EXISTS maxcompute ( v1 INT, v2 INT ) PARTITIONED BY ( v3 STRING );分別單擊提交到開發環境和提交到生產環境。
寫入MaxCompute外表資料。
在資料開發頁面,單擊左側導覽列的臨時查詢。
滑鼠移至上方至
表徵圖,單擊。在建立節點對話方塊中,選擇路徑並輸入名稱。
單擊確認。
在節點的編輯頁面,輸入如下語句,為MaxCompute外表寫入資料。
insert into maxcompute PARTITION (v3='2021') values (1,2),(2,3);單擊工具列中的
表徵圖。在參數視窗,選擇公用調度資源群組,單擊確定。
在MaxCompute計算成本估計視窗,確認預估費用,單擊運行。
建立雲資料庫ClickHouse表。
在叢集列表頁面,單擊目的地組群ID。
單擊右上方導覽列的登入資料庫。
輸入建表語句並單擊執行(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-endpoint為odps-endpoint,即VPC網路Endpoint。如何查看VPC網路Endpoint,請參見Endpoint。參數說明如下。
參數名
描述
table_name表名。
col_name1,col_name2列名。
col_type1,col_type2列類型。
說明雲資料庫ClickHouse表的結構類型需與MaxCompute對應。具體映射關係,請參見資料類型映射。
tunnel-endpointTunnel服務的串連地址Tunnel Endpoint。
為了確保雲資料庫ClickHouse與MaxCompute服務之間網路通暢,您需要採用阿里雲VPC網路訪問方式,且MaxCompute必須與您的雲資料庫ClickHouse叢集在同一地區。
說明如何查看VPC網路的
tunnel-endpoint,請參見Endpoint。project-nameMaxCompute專案名稱。
table-nameMaxCompute外表名。
partition-specMaxCompute分區。
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');
查詢雲資料庫ClickHouse表。
在叢集列表頁面,單擊目的地組群ID。
單擊右上方導覽列的登入資料庫。
輸入查詢語句並單擊執行(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,否則建表會報錯。 |
