AnalyticDB for MySQL推出湖儲存功能。該功能可以簡化資料湖的構建和儲存管理、最佳化任務,同時也支援儲存Iceberg、Paimon等類型的結構化表資料和非結構化檔案對象。該功能主要適用於需同時滿足離線批處理和即時分析的情境。本文主要介紹如何建立、修改湖儲存以及查看湖儲存的資料量。
湖儲存功能處於邀測中,如果您需要開通該功能,請提交工單聯絡支援人員。
前提條件
AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版。
功能介紹
AnalyticDB for MySQL湖儲存可以儲存Iceberg、Paimon等格式的結構化表資料和非結構化檔案對象。通過全託管架構,湖儲存能夠自動處理資料湖的構建、中繼資料治理和儲存最佳化等複雜任務,既降低儲存成本,又提升了查詢效能。通過統一的中繼資料管理和服務化資源調度,您也能夠快速完成資料接入、儲存最佳化以及多引擎協同計算的流程,且無需維護底層基礎設施。
費用說明
建立湖儲存後,AnalyticDB for MySQL會根據湖儲存中的資料量和使用時間長度隨用隨付。計費詳情,請參見企業版和基礎版產品定價和湖倉版產品定價。
讀寫湖儲存中的資料時,會產生請求費用,包括PUT類型請求次數費用和GET類型請求次數費用。計費詳情,請參見企業版和基礎版產品定價和湖倉版產品定價
注意事項
一個阿里雲帳號在同一地區內最多可建立5個湖儲存。
湖儲存的儲存用量顯示存在延遲,因此無法在資料寫入後立即查看到資料量。
刪除湖儲存時,需要確保已刪除該湖儲存中的所有資料,否則刪除湖儲存操作會報錯。
建立湖儲存後,AnalyticDB for MySQL會自動在其服務帳號下的OSS中,建立一個和AnalyticDB for MySQL叢集同地區、且與湖儲存同名的Bucket。您可以通過添加收藏路徑的方式,在自己阿里雲帳號下的OSS中查看該Bucket。
AnalyticDB for MySQL備份恢複功能不支援湖儲存中的資料。
建立湖儲存
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
在左側導覽列單擊。
單擊頁面右上方建立湖儲存。
在彈出的建立湖儲存對話方塊中單擊確定。
重要湖儲存名稱為系統自動產生,格式為
adb-lake-地區ID-任一字元串。湖儲存名稱全域唯一,建立後無法修改。(可選)修改湖儲存描述。
湖儲存名稱由系統自動產生,且不能修改。建議修改湖儲存描述,以區分不同業務情境下的湖儲存。
單擊目標湖儲存描述列的
按鈕。在彈出的修改湖儲存描述對話方塊中輸入描述資訊,然後單擊確定。
使用湖儲存
湖儲存表是AnalyticDB for MySQL湖儲存提供的全託管湖格式表,支援Iceberg和Paimon資料格式。在建立湖儲存表後,系統會自動為湖儲存表自動產生唯一的UUID,預設為oss://<湖儲存名稱>/lakehouse/default/tables/<table_uuid>。例如,湖儲存表test_iceberg_tbl的資料存放區在adb-lake-cn-shanghai-6gml****中,產生的UUID為oss://adb-lake-cn-shanghai-6gml****/lakehouse/default/tables/b22cd225-528d-421c-a2****。您可以通過XIHE引擎和Spark引擎建立、讀寫湖儲存表,也能夠像管理普通內表一樣管理湖儲存表的許可權和生命週期,讀寫湖儲存表的步驟如下:
通過Spark SQL讀寫湖儲存表
前提條件
叢集核心版本需為3.2.3.0及以上版本。
請在雲原生資料倉儲AnalyticDB MySQL控制台集群資訊頁面的配寘資訊地區,查看和升級核心版本。
操作步驟
進入資料開發。
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
在左側導覽列,單擊。
在SQLConsole視窗,選擇Spark引擎和資源群組(Job型資源群組或Spark引擎的Interactive型資源群組)。
建立外庫與Iceberg湖儲存表。
建立資料庫。
CREATE DATABASE adb_external_db_iceberg WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');參數說明:
參數
說明
adb_lake_bucket
指定湖儲存表資料的儲存位置。
在資料庫建表語句中指定湖儲存後,資料庫中的所有表將統一儲存於該湖儲存中。如果您不希望將資料庫下的所有表都儲存到湖儲存中,可以在建表時再設定該參數。
建立Iceberg外表。
SET spark.adb.lakehouse.enabled=true; ----開啟湖儲存 CREATE TABLE adb_external_db_iceberg.test_iceberg_tbl ( `id` int, `name` string, `age` int ) USING iceberg PARTITIONED BY (age) TBLPROPERTIES ( 'adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****' );參數說明:
參數
說明
adb_lake_bucket
指定湖儲存表資料的儲存位置。
若您已在建立資料庫時指定湖儲存,資料庫中的所有表將統一儲存於該湖儲存中,在建表時您無需再次指定。
若您在建立資料庫時未指定湖儲存,此處必須顯式指定,否則建表會報錯。指定後,該表的資料會儲存到該湖儲存中。
若在建立資料庫和建立表時均顯式指定湖儲存,則該表的資料會儲存在建表時指定的湖儲存中;而資料庫下的其他表則會儲存在建庫語句指定的湖儲存中。
寫入Iceberg資料。
SET spark.adb.lakehouse.enabled=true; ----開啟湖儲存 INSERT INTO adb_external_db_iceberg.test_iceberg_tbl VALUES (1, 'lisa', 10), (2, 'jams', 10);(可選)刪除Iceberg資料。
SET spark.adb.lakehouse.enabled=true; ----開啟湖儲存 DELETE FROM adb_external_db_iceberg.test_iceberg_tbl WHERE id = 1; DELETE FROM adb_external_db_iceberg.test_iceberg_tbl WHERE age = 20;查詢Iceberg外表資料。
SET spark.adb.lakehouse.enabled=true; ----開啟湖儲存 SELECT * FROM adb_external_db_iceberg.test_iceberg_tbl;返回結果如下:
+---+----+---+ |id |name|age| +---+----+---+ |1 |anna|10 | |2 |jams|20 | +---+----+---+(可選)刪除Iceberg外表。
執行如下語句會刪除AnalyticDB for MySQL中的Iceberg外表和OSS中Iceberg外表的資料。
SET spark.adb.lakehouse.enabled=true; DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;
通過XIHE SQL讀寫湖儲存表
前提條件
叢集核心版本需為3.2.5.3及以上版本。
請在雲原生資料倉儲AnalyticDB MySQL控制台集群資訊頁面的配寘資訊地區,查看和升級核心版本。
注意事項
不支援通過DELETE語句刪除湖儲存表中的單條資料,僅支援刪除整張表。
操作步驟
進入資料開發。
登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。
在左側導覽列,單擊。
在SQLConsole視窗,選擇XIHE引擎和Interactive型資源群組。
建立外庫與Iceberg外表。
建立外庫。
CREATE EXTERNAL DATABASE test_db WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');參數說明:
參數
說明
adb_lake_bucket
指定湖儲存表資料的儲存位置。
在資料庫建表語句中指定湖儲存後,資料庫中的所有表將統一儲存於該湖儲存中。如果您不希望將資料庫下的所有表都儲存到湖儲存中,可以在建表時再設定該參數。
建立Iceberg外表。
CREATE TABLE test_db.test_iceberg_tbl ( `id` int, `name` string )PARTITIONED BY (age int) STORED AS ICEBERG TBLPROPERTIES ( 'catalog_type' = 'ADB', 'adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****' );參數說明:
參數
說明
catalog_type
指定catalog類型。固定填寫為ADB。
adb_lake_bucket
指定湖儲存表資料的儲存位置。
若您已在建立資料庫時指定湖儲存,資料庫中的所有表將統一儲存於該湖儲存中,在建表時您無需再次指定。
若您在建立資料庫時未指定湖儲存,此處必須顯式指定,否則建表會報錯。指定後,該表的資料會儲存到該湖儲存中。
若在建立資料庫和建立表時均顯式指定湖儲存,則該表的資料會儲存在建表時指定的湖儲存中;而資料庫下的其他表則會儲存在建庫語句指定的湖儲存中。
寫入Iceberg資料。
INSERT INTO test_db1.test_iceberg_tbl select 1, 'anna', 10; INSERT INTO test_db1.test_iceberg_tbl select 2, 'jams', 20;查詢Iceberg外表資料。
SELECT * FROM adb_external_db_iceberg.test_iceberg_tbl;返回結果如下:
+---+----+---+ |id |name|age| +---+----+---+ |1 |anna|10 | |2 |jams|20 | +---+----+---+(可選)刪除Iceberg外表。
執行如下語句會刪除AnalyticDB for MySQL中的Iceberg外表和OSS中Iceberg外表的資料。
SET spark.adb.lakehouse.enabled=true; DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;
查詢湖儲存資料量
在左側導覽列單擊。
在目標湖儲存的儲存用量中查看資料量。
重要湖儲存的儲存用量顯示存在延遲,因此無法在資料寫入後立即查看到資料量。
刪除湖儲存
在左側導覽列單擊。
單擊目標湖儲存操作列的刪除。
在彈出的刪除對話方塊中單擊確定。
重要刪除湖儲存時,需要確保已刪除該湖儲存中的所有資料,否則刪除湖儲存操作會報錯。
按鈕。