Перейти к основному содержимому
Версия: 2.0.x

Обзор

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

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

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

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

Catalog

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

figure1

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

  • External catalog действует как ссылка на внешне управляемые metastore, что предоставляет 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 поддерживаются начиная с версии v1.5.2.
    • Paimon catalog: используется для запроса данных из Paimon. Paimon catalog поддерживаются начиная с версии v1.5.2.
    • Unified catalog: используется для запроса данных из источников данных Hive, Iceberg, Hudi и Delta Lake как единого источника данных. Unified catalog поддерживаются начиная с версии v1.5.2.

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

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

Доступ к catalog

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

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

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

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

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

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

Кросс-catalog запрос

Чтобы выполнить федеративный запрос между catalog из вашего текущего 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;