全部產品
Search
文件中心

ApsaraDB for SelectDB:湖倉一體

更新時間:Jul 06, 2024

本章節介紹如何通過雲資料庫 SelectDB 版提供的聯邦查詢技術,對資料湖、資料庫、遠端檔案等外部資料源進行聯邦分析。為您提供簡單、快速的資料分析體驗。

概述

雲資料庫 SelectDB 版提供多來源資料目錄功能(Multi-Catalog或Catalog),支援對接資料湖、資料庫等外部資料源,進行簡單快速地資料分析。Multi-Catalog功能在原有中繼資料層級之上新增一層Catalog,構成Catalog -> Database -> Table的三層中繼資料層級,Catalog可以直接對應到外部資料源。有關SelectDB支援的外部資料源,請參見資料湖分析資料庫分析

雲資料庫 SelectDB 版也提供表函數功能(Table-Value-Function或TVF),支援把S3、HDFS等常見遠端儲存中的檔案資料,映射成雲資料庫 SelectDB 版中的表,從而方便地對這些檔案資料進行分析,具體參見檔案分析

在本文中,主要介紹Catalog相關概念及使用方式。Catalog功能擴充了SelectDB的能力,使其不僅限於管理內部資料,還能高效整合和查詢外部資料源。通過使用Catalog,您可以快速存取和分析儲存在不同資料倉儲和儲存系統中的資料,從而實現更加靈活和全面的資料管理和分析。

基礎概念與操作

  • Internal Catalog

    SelectDB原有的Database和Table都歸屬於Internal Catalog。Internal Catalog是內建的預設Catalog,不可修改或刪除。

  • External Catalog

    可以通過CREATE CATALOG命令建立一個External Catalog。建立後,可以通過SHOW CATALOGS命令查看Catalog列表,或者SHOW CREATE CATALOG <catalog_name>;命令查詢某個Catalog的建立語句。

  • 切換Catalog

    您登入SelectDB後,預設進入Internal Catalog,此時您可以通過SWITCH命令切換Catalog,樣本如下。

    SWITCH internal;
    SWITCH hive_catalog;

    切換後,可以直接通過SHOW DATABASESUSE <db_name>等命令查看和切換對應Catalog中的Database。SelectDB會自動通過Catalog訪問外部資料源中的Database和Table,您可以像使用Internal Catalog一樣,對External Catalog中的資料進行查看和訪問。當前,雲資料庫 SelectDB 版支援對External Catalog中的資料進行唯讀訪問。

  • 刪除Catalog

    External Catalog中的Database和Table都是唯讀。但是如有必要,您可以通過DROP CATALOG <catalog_name>;命令刪除一個External Catalog(Internal Catalog無法刪除)。

    說明

    該操作僅會刪除SelectDB中該Catalog的映射資訊,並不會修改或變更任何外部資料目錄的內容。

列類型映射

建立Catalog後,雲資料庫 SelectDB 版會自動同步資料目錄的資料庫和表。針對不同的資料目錄和資料表格式,雲資料庫 SelectDB 版會進行列與列之間的關係映射。

對於當前無法映射到SelectDB列類型的外表類型,如UNIONINTERVAL等。SelectDB會將列類型映射為UNSUPPORTED類型。對於UNSUPPORTED類型的查詢,樣本如下:

-- 同步後的表Schema:
k1 INT,
k2 INT,
k3 UNSUPPORTED,
k4 INT

-- 查詢結果:
SELECT * FROM testtable;                // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`
SELECT * except(k3) FROM testtable;     // Query OK.
SELECT k1, k3 FROM testtable;           // Error: Unsupported type 'UNSUPPORTED_TYPE' in '`k3`
SELECT k1, k4 FROM testtable;           // Query OK.

SelectDB支援的資料類型可通過SHOW DATA TYPES;查看。關於不同外部資料源支援的資料類型,請參見資料湖分析資料庫分析

許可權管理

預設情況下,SelectDB訪問External Catalog中的庫表時,是由SelectDB自身的許可權訪問管理功能進行存取控制。SelectDB的許可權管理功能提供了對Catalog層級的擴充,更多資訊請參見許可權管理

指定資料庫

通過在Catalog配置中設定include_database_listexclude_database_list,可以指定需要同步的資料庫。

  • include_database_list:支援只同步指定的Database,以英文逗號(,)分隔,預設同步所有Database。Database名稱是區分大小寫。

  • exclude_database_list:支援指定不需要同步的Database,以英文逗號(,)分隔,預設為空白,表示同步所有Database。Database名稱是區分大小寫。

重要
  • include_database_listexclude_database_list有重合的Database配置時,exclude_database_list的優先順序更高。

  • 串連JDBC時,上述兩個配置需要和only_specified_database參數搭配使用,更多資訊請參見JDBC資料來源

中繼資料更新

預設情況下,外部資料源如建立、刪除表、加減列等中繼資料變動操作,不會同步給SelectDB。您可以通過以下幾種方式重新整理中繼資料。

手動重新整理

通過REFRESH命令手動重新整理中繼資料。

文法

REFRESH CATALOG catalog_name;
REFRESH DATABASE [catalog_name.]database_name;
REFRESH TABLE [catalog_name.][database_name.]table_name;

重新整理Catalog的同時,會強制使對象相關的Cache失效,包括Partition Cache、Schema Cache、File Cache等。

樣本

  1. 重新整理Catalog,樣本如下。

    REFRESH CATALOG hive;
  2. 重新整理Database,樣本如下。

    REFRESH DATABASE ctl.database1;
    REFRESH DATABASE database1;
  3. 重新整理Table,樣本如下。

    REFRESH TABLE ctl.db.table1;
    REFRESH TABLE db.table1;
    REFRESH TABLE table1;

定時重新整理

建立Catalog時,通過在properties中指定重新整理時間參數metadata_refresh_interval_sec,可啟用定時重新整理。定時重新整理以秒為單位,若在建立Catalog時設定了該參數,FE的master節點會根據參數值定時重新整理該Catalog。目前僅三種資料來源支援定時重新整理:

  • HMS:Hive Metastore。

  • ES:Elasticsearch。

  • JDBC:資料庫訪問的標準介面(JDBC)。

-- 設定catalog重新整理間隔為20秒
CREATE CATALOG es PROPERTIES (
    "type"="es",
    "hosts"="http://127.0.0.1:9200",
    "metadata_refresh_interval_sec"="20"
);

自動重新整理

目前僅Hive Catalog資料來源的部分事件會自動重新整理Catalog,更多資訊請參見中繼資料快取與重新整理