Hudi 連接器

概觀

Hudi 連接器可查詢同步至 Hive Metastore 的 Hudi 表格。此連接器僅使用 Metastore 來追蹤分割區位置。它會使用底層的 Hudi 檔案系統和輸入格式來列出資料檔案。若要深入了解連接器的設計,請查看 RFC-40

需求

若要使用 Hudi,我們需要:

  • Presto 協調器和工作節點與分散式物件儲存之間的網路存取權。

  • 存取 Hive Metastore 服務 (HMS)。

  • 從 Presto 協調器到 HMS 的網路存取權。使用 Thrift 通訊協定的 Hive Metastore 存取預設使用連接埠 9083。

設定

Hudi 支援與 Hive 連接器相同的 Metastore 設定屬性。至少,必須在 <presto_install_dir>/etc/catalog 目錄內的 hudi.properties 檔案中設定以下連接器屬性:

connector.name=hudi
hive.metastore.uri=thrift://hms.host:9083

此外,可以根據使用案例設定以下工作階段屬性。

屬性名稱

描述

預設值

hudi.metadata-table-enabled

從 Hudi 的中繼資料表而非儲存體擷取檔案名稱和大小的清單。

false

SQL 支援

目前,連接器僅提供對同步至 Hive Metastore 的 Hudi 表格中資料的讀取權限。如上所述設定目錄後,使用者可以像 Hive 表格一樣正常查詢表格。

支援的查詢類型

表格類型

支援的查詢類型

複製時寫入 (Copy On Write)

快照查詢

合併時讀取 (Merge On Read)

快照查詢 + 讀取最佳化查詢

範例查詢

stock_ticks_cow 是我們在 Hudi 快速入門文件中建立的 Hudi COW 表格。

以下是一些範例查詢

USE hudi.default;
select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
  symbol   |        _col1         |
-----------+----------------------+
 GOOG      | 2018-08-31 10:59:00  |
(1 rows)
select dt, symbol from stock_ticks_cow where symbol = 'GOOG';
    dt      | symbol |
------------+--------+
 2018-08-31 |  GOOG  |
(1 rows)
select dt, count(*) from stock_ticks_cow group by dt;
    dt      | _col1 |
------------+--------+
 2018-08-31 |  99  |
(1 rows)