全部產品
Search
文件中心

AnalyticDB:湖儲存

更新時間:Sep 11, 2025

AnalyticDB for MySQL推出湖儲存功能。該功能可以簡化資料湖的構建和儲存管理、最佳化任務,同時也支援儲存Iceberg、Paimon等類型的結構化表資料和非結構化檔案對象。該功能主要適用於需同時滿足離線批處理和即時分析的情境。本文主要介紹如何建立、修改湖儲存以及查看湖儲存的資料量。

重要

湖儲存功能處於邀測中,如果您需要開通該功能,請提交工單聯絡支援人員。

前提條件

AnalyticDB for MySQL叢集的產品系列為企業版、基礎版或湖倉版

功能介紹

AnalyticDB for MySQL湖儲存可以儲存Iceberg、Paimon等格式的結構化表資料和非結構化檔案對象。通過全託管架構,湖儲存能夠自動處理資料湖的構建、中繼資料治理和儲存最佳化等複雜任務,既降低儲存成本,又提升了查詢效能。通過統一的中繼資料管理和服務化資源調度,您也能夠快速完成資料接入、儲存最佳化以及多引擎協同計算的流程,且無需維護底層基礎設施。

費用說明

注意事項

  • 一個阿里雲帳號在同一地區內最多可建立5個湖儲存。

  • 湖儲存的儲存用量顯示存在延遲,因此無法在資料寫入後立即查看到資料量。

  • 刪除湖儲存時,需要確保已刪除該湖儲存中的所有資料,否則刪除湖儲存操作會報錯。

  • 建立湖儲存後,AnalyticDB for MySQL會自動在其服務帳號下的OSS中,建立一個和AnalyticDB for MySQL叢集同地區、且與湖儲存同名的Bucket。您可以通過添加收藏路徑的方式,在自己阿里雲帳號下的OSS中查看該Bucket。

    點擊查看OSS Bucket的方法

    1. 登入OSS管理主控台

    2. 在左側導覽列單擊我的收藏路徑後面的image按鈕。

    3. 添加收藏路徑對話方塊中選擇添加方式,並填寫地區以及Bucket名稱

      添加方式:固定選擇為從其他已授權bucket添加

      地區AnalyticDB for MySQL叢集所屬地區。

      Bucket:填寫湖儲存名稱

  • AnalyticDB for MySQL備份恢複功能不支援湖儲存中的資料。

建立湖儲存

  1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。

  2. 在左側導覽列單擊資料管理 > 湖儲存管理

  3. 單擊頁面右上方建立湖儲存

  4. 在彈出的建立湖儲存對話方塊中單擊確定

    重要

    湖儲存名稱為系統自動產生,格式為adb-lake-地區ID-任一字元串。湖儲存名稱全域唯一,建立後無法修改。

  5. (可選)修改湖儲存描述。

    湖儲存名稱由系統自動產生,且不能修改。建議修改湖儲存描述,以區分不同業務情境下的湖儲存。

    1. 單擊目標湖儲存描述列的image按鈕。

    2. 在彈出的修改湖儲存描述對話方塊中輸入描述資訊,然後單擊確定

使用湖儲存

湖儲存表是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控制台集群資訊頁面的配寘資訊地區,查看和升級核心版本

操作步驟

  1. 進入資料開發。

    1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。

    2. 在左側導覽列,單擊作業開發 > SQL開發

    3. SQLConsole視窗,選擇Spark引擎和資源群組(Job型資源群組或Spark引擎的Interactive型資源群組)。

  2. 建立外庫與Iceberg湖儲存表。

    1. 建立資料庫。

      CREATE DATABASE adb_external_db_iceberg 
      WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');

      參數說明:

      參數

      說明

      adb_lake_bucket

      指定湖儲存表資料的儲存位置。

      在資料庫建表語句中指定湖儲存後,資料庫中的所有表將統一儲存於該湖儲存中。如果您不希望將資料庫下的所有表都儲存到湖儲存中,可以在建表時再設定該參數。

    2. 建立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

      指定湖儲存表資料的儲存位置。

      • 若您已在建立資料庫時指定湖儲存,資料庫中的所有表將統一儲存於該湖儲存中,在建表時您無需再次指定。

      • 若您在建立資料庫時未指定湖儲存,此處必須顯式指定,否則建表會報錯。指定後,該表的資料會儲存到該湖儲存中。

      • 若在建立資料庫和建立表時均顯式指定湖儲存,則該表的資料會儲存在建表時指定的湖儲存中;而資料庫下的其他表則會儲存在建庫語句指定的湖儲存中。

  3. 寫入Iceberg資料。

    SET spark.adb.lakehouse.enabled=true;                      ----開啟湖儲存
    INSERT INTO adb_external_db_iceberg.test_iceberg_tbl VALUES (1, 'lisa', 10), (2, 'jams', 10);
  4. (可選)刪除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;
  5. 查詢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 |
    +---+----+---+
  6. (可選)刪除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語句刪除湖儲存表中的單條資料,僅支援刪除整張表。

操作步驟

  1. 進入資料開發。

    1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。

    2. 在左側導覽列,單擊作業開發 > SQL開發

    3. SQLConsole視窗,選擇XIHE引擎和Interactive型資源群組。

  2. 建立外庫與Iceberg外表。

    1. 建立外庫。

      CREATE EXTERNAL DATABASE test_db 
      WITH DBPROPERTIES ('adb_lake_bucket' = 'adb-lake-cn-shanghai-6gml****');

      參數說明:

      參數

      說明

      adb_lake_bucket

      指定湖儲存表資料的儲存位置。

      在資料庫建表語句中指定湖儲存後,資料庫中的所有表將統一儲存於該湖儲存中。如果您不希望將資料庫下的所有表都儲存到湖儲存中,可以在建表時再設定該參數。

    2. 建立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

      指定湖儲存表資料的儲存位置。

      • 若您已在建立資料庫時指定湖儲存,資料庫中的所有表將統一儲存於該湖儲存中,在建表時您無需再次指定。

      • 若您在建立資料庫時未指定湖儲存,此處必須顯式指定,否則建表會報錯。指定後,該表的資料會儲存到該湖儲存中。

      • 若在建立資料庫和建立表時均顯式指定湖儲存,則該表的資料會儲存在建表時指定的湖儲存中;而資料庫下的其他表則會儲存在建庫語句指定的湖儲存中。

  3. 寫入Iceberg資料。

    INSERT INTO test_db1.test_iceberg_tbl select 1, 'anna', 10;
    INSERT INTO test_db1.test_iceberg_tbl select 2, 'jams', 20;
  4. 查詢Iceberg外表資料。

    SELECT * FROM adb_external_db_iceberg.test_iceberg_tbl;

    返回結果如下:

    +---+----+---+
    |id |name|age|
    +---+----+---+
    |1  |anna|10 |
    |2  |jams|20 |
    +---+----+---+
  5. (可選)刪除Iceberg外表。

    執行如下語句會刪除AnalyticDB for MySQL中的Iceberg外表和OSS中Iceberg外表的資料。

    SET spark.adb.lakehouse.enabled=true;
    DROP TABLE adb_external_db_iceberg.test_iceberg_tbl;

查詢湖儲存資料量

  1. 在左側導覽列單擊資料管理 > 湖儲存管理

  2. 在目標湖儲存的儲存用量中查看資料量。

    重要

    湖儲存的儲存用量顯示存在延遲,因此無法在資料寫入後立即查看到資料量。

刪除湖儲存

  1. 在左側導覽列單擊資料管理 > 湖儲存管理

  2. 單擊目標湖儲存操作列的刪除

  3. 在彈出的刪除對話方塊中單擊確定

    重要

    刪除湖儲存時,需要確保已刪除該湖儲存中的所有資料,否則刪除湖儲存操作會報錯。

相關文檔