從MaxCompute外表導入(20.3及以上)
本文介紹如何將數(shù)據(jù)通過阿里云MaxCompute外表方式導入至云數(shù)據(jù)庫ClickHouse。
注意事項
云數(shù)據(jù)庫ClickHouse社區(qū)兼容版集群的內核版本為20.3及以上。
MaxCompute服務為付費服務。計費詳情,請參見MaxCompute計費方式。
為了確保云數(shù)據(jù)庫ClickHouse與MaxCompute服務之間網(wǎng)絡通暢,您需要采用阿里云VPC網(wǎng)絡訪問方式,且MaxCompute必須與您的云數(shù)據(jù)庫ClickHouse集群在同一地域。
前提條件
已開通MaxCompute服務。如何開通,請參見開通MaxCompute。
已創(chuàng)建MaxCompute項目,且與云數(shù)據(jù)庫ClickHouse集群在同一地域。如何創(chuàng)建,請參見創(chuàng)建MaxCompute項目。
如果RAM用戶使用MaxCompute,需要阿里云主賬號為RAM用戶授權。如何授權,請參見準備RAM用戶。
操作步驟
創(chuàng)建MaxCompute外表。
在左側導航欄,單擊 。
在數(shù)據(jù)開發(fā)頁面,鼠標懸停至圖標,單擊 。
在新建表對話框中,輸入表名,本文以maxcompute表名為例。
單擊新建。
在基本屬性區(qū)域,配置各項參數(shù)。
單擊工具欄中的DDL。
在DDL對話框中,輸入如下建表語句,單擊生成表結構。
CREATE TABLE IF NOT EXISTS maxcompute ( v1 INT, v2 INT ) PARTITIONED BY ( v3 STRING );
分別單擊提交到開發(fā)環(huán)境和提交到生產(chǎn)環(huán)境。
寫入MaxCompute外表數(shù)據(jù)。
在數(shù)據(jù)開發(fā)頁面,單擊左側導航欄的臨時查詢。
鼠標懸停至圖標,單擊 。
在新建節(jié)點對話框中,選擇路徑并輸入名稱。
單擊確認。
在節(jié)點的編輯頁面,輸入如下語句,為MaxCompute外表寫入數(shù)據(jù)。
insert into maxcompute PARTITION (v3='2021') values (1,2),(2,3);
單擊工具欄中的圖標。
在參數(shù)窗口,選擇公共調度資源組,單擊確定。
在MaxCompute計算成本估計窗口,確認預估費用,單擊運行。
創(chuàng)建云數(shù)據(jù)庫ClickHouse表。
在集群列表頁面,單擊目標集群ID。
單擊右上方導航欄的登錄數(shù)據(jù)庫。
輸入建表語句并單擊執(zhí)行(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網(wǎng)絡Endpoint。如何查看VPC網(wǎng)絡Endpoint,請參見Endpoint。參數(shù)說明如下。
參數(shù)名
描述
table_name
表名。
col_name1,col_name2
列名。
col_type1,col_type2
列類型。
說明云數(shù)據(jù)庫ClickHouse表的結構類型需與MaxCompute對應。具體映射關系,請參見數(shù)據(jù)類型映射。
tunnel-endpoint
Tunnel服務的連接地址Tunnel Endpoint。
為了確保云數(shù)據(jù)庫ClickHouse與MaxCompute服務之間網(wǎng)絡通暢,您需要采用阿里云VPC網(wǎng)絡訪問方式,且MaxCompute必須與您的云數(shù)據(jù)庫ClickHouse集群在同一地域。
說明如何查看VPC網(wǎng)絡的
tunnel-endpoint
,請參見Endpoint。project-name
MaxCompute項目名稱。
table-name
MaxCompute外表名。
partition-spec
MaxCompute分區(qū)。
access-key-id
訪問MaxCompute項目的AccessKey ID。
access-key-secret
訪問MaxCompute項目的AccessKey Secret。
read-thread-num
(可選)讀取MaxCompute表時單個分片的并發(fā)數(shù),默認值是1。
quota
(可選)MaxCompute計算資源的單元,默認共享Quota。
建表語句如下。
CREATE TABLE default.maxcomputetest ON CLUSTER default ( v1 Int32, v2 Int32 ) ENGINE = MaxCompute('http://dt.cn-hangzhou.maxcompute.aliyun-inc.com', 'ckfwt', 'maxcompute', 'v3=2021', 'LTAI5tDVcUKu2CbcBwhr****', 'WAcroHBcL7IVOK8FIHzNJy91Lc****');
查詢云數(shù)據(jù)庫ClickHouse表。
在集群列表頁面,單擊目標集群ID。
單擊右上方導航欄的登錄數(shù)據(jù)庫。
輸入查詢語句并單擊執(zhí)行(F8)。
SELECT * FROM maxcomputetest;
查詢結果如下。
數(shù)據(jù)類型映射
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>對應云數(shù)據(jù)庫ClickHouse中的類型是:Nested(k Nullable(String), v Nullable(String))。 說明 Nested內部的類型必須是Nullable,否則建表會報錯。 |
Array | Array(Nullable(Type))。目前只支持一層非嵌套的Array結構。 例如MaxCompute中array<int>對應云數(shù)據(jù)庫ClickHouse中的類型是:Array(Nullable(Int32))。 說明 Array內部的類型必須是Nullable,否則建表會報錯。 |
Struct | Tuple(Nullable(Type))。目前只支持一層非嵌套的Struct結構。 例如MaxCompute中struct<x:int, y:string>對應云數(shù)據(jù)庫ClickHouse中的類型是:Tuple(Nulable(Int32), Nullable(String))。 說明 Tuple內部的類型必須是Nullable,否則建表會報錯。 |