Перейти к основному содержимому

Обзор

Эта тема описывает, что такое каталог, и как управлять и запрашивать внутренние и внешние данные с помощью каталога.

Selena поддерживает функцию каталогов начиная с версии 1.5.0. Каталоги позволяют управлять внутренними и внешними данными в одной системе и предлагают гибкий способ легко запрашивать и анализировать данные, хранящиеся в различных внешних системах.

Основные понятия

  • Внутренние данные: относятся к данным, хранящимся в Selena.
  • Внешние данные: относятся к данным, хранящимся во внешнем источнике данных, таком как Apache Hive™, Apache Iceberg, Apache Hudi, Delta Lake и JDBC.

Catalog

В настоящее время Selena предоставляет два типа каталогов: внутренний catalog и external catalog.

figure1

  • Внутренний catalog управляет внутренними данными Selena. Например, если вы выполняете операторы CREATE DATABASE или CREATE TABLE для создания базы данных или таблицы, база данных или таблица сохраняется во внутреннем catalog. Каждый кластер Selena имеет только один внутренний catalog с именем default_catalog.

  • External catalog действует как связь с внешне управляемыми метахранилищами, что предоставляет Selena прямой доступ к внешним источникам данных. Вы можете запрашивать внешние данные напрямую без загрузки или миграции данных. В настоящее время Selena поддерживает следующие типы external catalog:

    • Hive catalog: используется для запроса данных из Hive.
    • Iceberg catalog: используется для запроса данных из Iceberg.
    • Hudi catalog: используется для запроса данных из Hudi.
    • Delta Lake catalog: используется для запроса данных из Delta Lake.
    • JDBC catalog: используется для запроса данных из источников данных, совместимых с JDBC.
    • Elasticsearch catalog: используется для запроса данных из Elasticsearch. Elasticsearch catalog поддерживаются начиная с версии 1.5.0.
    • Paimon catalog: используется для запроса данных из Paimon. Paimon catalog поддерживаются начиная с версии 1.5.0.
    • Unified catalog: используется для запроса данных из источников данных Hive, Iceberg, Hudi и Delta Lake как единого источника данных. Unified catalog поддерживаются начиная с версии 1.5.0.

    Selena взаимодействует со следующими двумя компонентами внешних источников данных при запросе внешних данных:

    • Сервис метахранилища: используется FE для доступа к метаданным внешних источников данных. FE генерируют план выполнения запроса на основе метаданных.
    • Система хранения данных: используется для хранения внешних данных. Как распределенные файловые системы, так и системы объектного хранения могут использоваться в качестве систем хранения данных для хранения файлов данных в различных форматах. После того как FE распределяют план выполнения запроса всем BE или CN, все BE или CN сканируют целевые внешние данные параллельно, выполняют вычисления, а затем возвращают результат запроса.

Доступ к catalog

Вы можете использовать оператор SET CATALOG для переключения на указанный catalog в текущей сессии. Затем вы можете запрашивать данные, используя этот catalog.

Запрос данных

Запрос внутренних данных

Для запроса данных в Selena см. Default catalog.

Запрос внешних данных

Для запроса данных из внешних источников данных см. Query external data.

Межкаталоговый запрос

Для выполнения межкаталогового федеративного запроса из вашего текущего catalog укажите данные, которые вы хотите запросить, в формате catalog_name.database_name или catalog_name.database_name.table_name.

  • Запрос hive_table в hive_db, когда текущая сессия — default_catalog.olap_db.

    SELECT * FROM hive_catalog.hive_db.hive_table;
  • Запрос olap_table в default_catalog, когда текущая сессия — hive_catalog.hive_db.

     SELECT * FROM default_catalog.olap_db.olap_table;
  • Выполнение JOIN запроса для hive_table в hive_catalog и olap_table в default_catalog, когда текущая сессия — hive_catalog.hive_db.

    SELECT * FROM hive_table h JOIN default_catalog.olap_db.olap_table o WHERE h.id = o.id;
  • Выполнение JOIN запроса для hive_table в hive_catalog и olap_table в default_catalog с использованием JOIN предложения, когда текущая сессия — другой catalog.

    SELECT * FROM hive_catalog.hive_db.hive_table h JOIN default_catalog.olap_db.olap_table o WHERE h.id = o.id;