MaxCompute支援通過建立Paimon外部表格來與儲存在OSS上的Paimon表目錄建立映射關係,並訪問其中的資料。本文將介紹如何建立Paimon外部表格並通過MaxCompute訪問Paimon外部表格。
背景資訊
Apache Paimon是一種流批一體的湖儲存格式,具備高吞吐的寫入和低延後查詢能力。阿里雲Realtime ComputeFlink版、開源巨量資料平台E-MapReduce的常見計算引擎(如Spark、Hive或Trino)都與Paimon有完善的整合。藉助Apache Paimon,您可以快速構建自己的資料湖儲存服務在儲存服務OSS上,並接入MaxCompute實現資料湖的分析。關於Apache Paimon的詳細資料,請參見Apache Paimon。
前提條件
當前執行操作的帳號已具備建立MaxCompute表(CreateTable)的許可權。更多表許可權資訊,請參見MaxCompute許可權。
已建立MaxCompute專案。具體操作,請參見建立MaxCompute專案。
已建立儲存空間(Bucket)以及對應的檔案目錄。具體操作,請參見建立儲存空間。
說明由於MaxCompute只在部分地區部署,跨地區的資料連通性可能存在問題,因此建議Bucket與MaxCompute專案所在地區保持一致。
已購買Flink全託管,具體操作請參見開通Realtime ComputeFlink版。
注意事項
當前MaxCompute僅支援對Paimon外部表格的讀取操作。要建立Paimon外部表格,您可以使用阿里雲Realtime ComputeFlink版或開源巨量資料平台E-MapReduce。
Paimon當前暫時不支援開啟了Schema操作的MaxCompute專案。
Paimon外部表格不支援cluster屬性。
建立Paimon外部表格命令文法
MaxCompute建立Paimon外部表格的文法定義如下:
create external table [if not exists] <mc_oss_extable_name>
(
<col_name> <data_type>,
...
)
[partitioned by (<col_name> <data_type>, ...)]
stored by 'org.apache.paimon.hive.PaimonStorageHandler'
with serdeproperties (
'odps.properties.rolearn'='acs:ram::xxxxxxxxxxxxx:role/aliyunodpsdefaultrole'
)
location '<oss_location>'
using 'paimon_maxcompute_connector.jar';
參數介紹和文法詳情,請參見建立OSS外部表格。
使用說明
步驟一:在Flink中準備資料
建立Paimon Catalog和Paimon表,並在表中插入資料,參考樣本操作步驟如下。如果您在Flink中已有Paimon表和資料,可以跳過此步。
登入Realtime Compute控制台,建立Paimon Catalog。具體操作,請參見建立Paimon Catalog。
建立Paimon表。具體操作,請參見使用Paimon Catalog。
在中繼資料管理頁面,選擇已建立Paimon Catalog下的default,然後單擊建立表,如下圖所示。
在添加表對話方塊,選擇Apache Paimon連接器,輸入以下語句,單擊確定。本位以test_tbl為例。
CREATE TABLE `catalogname`.`default`.test_tbl ( dt STRING, id BIGINT, data STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt);
在SQL 開發頁面,建立包含如下語句的SQL作業,部署並運行作業。關於如何建立並運行SQL作業詳情,請參見SQL作業開發。
INSERT INTO `catalogname`.`default`.test_tbl VALUES ('2023-04-21', 1, 'AAA'), ('2023-04-21', 2, 'BBB'), ('2023-04-22', 1, 'CCC'), ('2023-04-22', 2, 'DDD');
說明請確認SQL作業的引擎版本為vvr-8.0.1-flink-1.17及以上版本。
若SQL作業有限流作業(例如執行
INSERT INTO ... VALUES ...
語句),需要在作業營運頁面,編輯運行參數配置,在其他配置設定execution.checkpointing.checkpoints-after-tasks-finish.enabled: true
代碼。關於如何配置作業的運行參數詳情,請參見配置作業部署資訊。
步驟二:在MaxCompute專案中上傳Paimon外掛程式
您可以選擇以下其中一種方式,在已建立的MaxCompute專案中上傳Paimon外掛程式。
使用MaxCompute用戶端
通過用戶端(odpscmd)訪問已建立的MaxCompute專案,並執行以下代碼,將paimon_maxcompute_connector.jar
上傳至MaxCompute專案中。
ADD JAR <path_to_paimon_maxcompute_connector.jar>;
使用DataWorks
登入DataWorks控制台,在左側導覽列選擇工作空間列表,單擊目標工作空間操作列中的快速進入 > 資料開發。
在資料開發頁面,單擊建立按鈕,選擇建立資源 > JAR。
在建立資源對話方塊,配置建立資源參數,上傳
paimon_maxcompute_connector.jar
,單擊建立。建立資源操作詳情,請參見步驟一:建立或上傳資源。資源建立完成後,您需在資源編輯頁面,單擊工具列中的表徵圖,提交資源至調度程式開發伺服器端。
步驟三:通過MaxCompute建立Paimon外表
使用本地用戶端(odpscmd)串連或其他可以運行MaxCompute SQL的工具,建立MaxCompute Paimon外部表格。本文以oss_extable_paimon_1
為例。
create external table oss_extable_paimon_1
(
dt STRING,
id BIGINT,
data STRING
)
stored by 'org.apache.paimon.hive.PaimonStorageHandler'
with serdeproperties (
'odps.properties.rolearn'='acs:ram::124895376754****:role/aliyunodpsdefaultrole'
)
location 'oss://oss-cn-beijing-internal.aliyuncs.com/paimon_flink/test_db_y.db/test_tbl_nopt/'
using 'paimon_maxcompute_connector.jar'
;
步驟四:通過MaxCompute讀取Paimon外部表格
使用本地用戶端(odpscmd)或其他可以運行MaxCompute SQL的工具,執行以下命。
SET odps.sql.common.table.planner.ext.hive.bridge = true; SET odps.sql.hive.compatible = true;
執行以下命令,查詢MaxCompute Paimon外部表格
oss_extable_paimon_1
。SELECT * FROM oss_extable_paimon_1;
樣本返回結果如下。
+------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | AAA | 2023-04-21 | | 2 | BBB | 2023-04-21 | +------------+------------+------------+