全部產品
Search
文件中心

E-MapReduce:Hudi Catalog

更新時間:Mar 13, 2025

Hudi Catalog是一種External Catalog。通過Hudi Catalog,您不需要執行資料匯入就可以直接查詢Apache Hudi裡的資料。此外,您還可以基於Hudi Catalog ,結合INSERT INTO能力來實現資料轉換和匯入。StarRocks從2.4版本開始支援Hudi Catalog。

背景資訊

為確保StarRocks叢集能夠正常訪問Hudi內的資料,必須實現對Hudi集儲存系統和中繼資料服務的串連。目前,StarRocks支援下列儲存系統和中繼資料服務:

  • Distributed File System(HDFS)或阿里雲Object Storage Service。

  • 中繼資料服務。當前支援的中繼資料服務包括資料湖構建(DLF)和Hive Metastore(以下簡稱HMS)。

使用限制

  • StarRocks查詢Hudi資料時,支援Parquet檔案格式。Parquet檔案支援SNAPPY、LZ4、ZSTD、GZIP和NO_COMPRESSION壓縮格式。

  • StarRocks完整支援了Hudi的Copy On Write(COW)表和Merge On Read(MOR)表。

建立Hudi Catalog

文法

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
    "type" = "hudi",
    MetastoreParams,
    StorageCredentialParams,
    MetadataUpdateParams
)

參數說明

  • catalog_name:Hudi Catalog的名稱,必選參數。命名要求如下:

    • 必須由字母(a~z或A~Z)、數字(0~9)或底線(_)組成,且只能以字母開頭。

    • 總長度不能超過64個字元。

  • comment:Hudi Catalog的描述。此參數為可選。

  • type:資料來源的類型。設定為hudi

  • MetastoreParams:StarRocks訪問Hudi叢集中繼資料的相關參數配置。

    • 使用DLF

      屬性

      說明

      hive.metastore.type

      Hudi使用的中繼資料類型,設定為dlf

      dlf.catalog.id

      DLF中已有的資料目錄ID。僅當hive.metastore.type配置為dlf時需要填寫該參數。如果未配置dlf.catalog.id參數的值,則系統將使用預設的DLF Catalog。

    • 使用HMS

      屬性

      說明

      hive.metastore.type

      Hudi使用的中繼資料類型,設定為hive

      hive.metastore.uris

      Hive MetaStore的URI。格式為thrift://<Hive MetaStore的IP地址>:<連接埠號碼>,連接埠號碼預設為9083。

樣本

以下樣本建立了一個名為hudi_catalog的Hudi Catalog。

CREATE EXTERNAL CATALOG hudi_catalog
PROPERTIES
(
    "type" = "hudi",
    "hive.metastore.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083"
);

查看Hudi Catalog

您可以通過以下命令查詢當前所在StarRocks叢集裡所有Catalog。

SHOW CATALOGS;

您也可以通過以下命令查詢某個External Catalog的建立語句。例如,通過如下命令查詢 Hudi Cataloghudi_catalog的建立語句。

SHOW CREATE CATALOG hudi_catalog;

切換Hudi Catalog和資料庫

您可以通過如下方法切換至目標Hudi Catalog和資料庫:

  • 先通過SET CATALOG指定當前會話生效的Hudi Catalog,然後再通過USE指定資料庫。

    -- 切換當前會話生效的 Catalog:
    SET CATALOG <catalog_name>;
    -- 指定當前會話生效的資料庫:
    USE <db_name>;
  • 通過USE直接將會話切換到目標Hudi Catalog下的指定資料庫。

    USE <catalog_name>.<db_name>;

刪除Hudi Catalog

您可以通過DROP CATALOG刪除某個External Catalog。

例如,通過以下命令刪除hudi_catalog

DROP Catalog hudi_catalog;

查看Hudi表結構

您可以通過如下方法查看Hudi表的表結構:

  • 查看錶結構

    DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
  • 從CREATE命令查看錶結構和表檔案存放位置

    SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;

查看Hudi表資料

您可以通過SELECT查詢目標資料庫中的目標表。

SELECT * FROM <catalog_name>.<database_name>.<table_name>;

匯入Hudi資料

假設有一個OLAP表,表名為olap_tbl。您可以這樣來轉換該表中的資料,並把資料匯入到StarRocks中。

INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM hudi_table;

手動或自動更新中繼資料快取

StarRocks預設會緩衝Hudi的中繼資料,並以非同步模式自動更新這些緩衝,以提升查詢效能。此外,在對Hudi表進行表結構變更或其他更新後,您可以使用 REFRESH EXTERNAL TABLE手動更新該表的中繼資料,以確保StarRocks能夠第一時間產生合理的查詢計劃。

REFRESH EXTERNAL TABLE <table_name> [PARTITION ('partition_name', ...)]

相關文檔

Hudi更多介紹,請參見Hudi概述