本文介紹如何將資料通過阿里雲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,否則建表會報錯。 |
