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

[Экспериментальный] Kudu catalog

Selena поддерживает Kudu catalogs начиная с версии 1.5.0.

Kudu catalog — это тип external catalog, который позволяет запрашивать данные из Apache Kudu без предварительной загрузки.

Также вы можете напрямую преобразовывать и загружать данные из Kudu, используя INSERT INTO на основе Kudu catalogs.

Чтобы обеспечить успешное выполнение SQL-запросов в вашем Kudu кластере, ваш Selena кластер должен интегрироваться со следующими важными компонентами:

  • Metastore, такой как ваша файловая система kudu или Hive metastore

Примечания по использованию​

Вы можете использовать Kudu catalogs только для запроса данных. Вы не можете использовать Kudu catalogs для удаления или вставки данных в ваш Kudu кластер.

Подготовка к интеграции​

Перед созданием Kudu catalog убедитесь, что ваш Selena кластер может интегрироваться с системой хранения и metastore вашего Kudu кластера.

ПРИМЕЧАНИЕ

Если при отправке запроса возвращается ошибка о неизвестном хосте, вы должны добавить соответствие между именами хостов и IP-адресами узлов вашего KUDU кластера в путь /etc/hosts.

Аутентификация Kerberos​

Если для вашего KUDU кластера или Hive metastore включена аутентификация Kerberos, настройте ваш Selena кластер следующим образом:

  • Выполните команду kinit -kt keytab_path principal на каждом FE и каждом BE для получения Ticket Granting Ticket (TGT) от Key Distribution Center (KDC). Для выполнения этой команды у вас должны быть разрешения на доступ к вашему KUDU кластеру и Hive metastore. Обратите внимание, что доступ к KDC с помощью этой команды ограничен по времени. Поэтому вам нужно использовать cron для периодического выполнения этой команды.
  • Добавьте JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf" в файл $FE_HOME/conf/fe.conf каждого FE и в файл $BE_HOME/conf/be.conf каждого BE. В этом примере /etc/krb5.conf — это путь сохранения файла krb5.conf. Вы можете изменить путь в соответствии с вашими потребностями.

Создание Kudu catalog​

Синтаксис​

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "kudu",
CatalogParams
)

Параметры​

catalog_name​

Имя Kudu catalog. Соглашения об именовании следующие:

  • Имя может содержать буквы, цифры (0-9) и символы подчеркивания (_). Оно должно начинаться с буквы.
  • Имя чувствительно к регистру и не может превышать 1023 символа в длину.

comment​

Описание Kudu catalog. Этот параметр необязательный.

type​

Тип вашего источника данных. Установите значение kudu.

CatalogParams​

Набор параметров о том, как Selena получает доступ к метаданным вашего Kudu кластера.

В следующей таблице описаны параметры, которые вам нужно настроить в CatalogParams.

ПараметрОбязательныйОписание
kudu.catalog.typeДаТип metastore, который вы используете для вашего Kudu кластера. Установите этот параметр в kudu или hive.
kudu.masterНетУказывает адрес Kudu Master, который по умолчанию равен localhost:7051.
hive.metastore.urisНетURI вашего Hive metastore. Формат: thrift://<metastore_IP_address>:<metastore_port>. Если для вашего Hive metastore включена высокая доступность (HA), вы можете указать несколько URI metastore и разделить их запятыми (,), например, "thrift://<metastore_IP_address_1>:<metastore_port_1>,thrift://<metastore_IP_address_2>:<metastore_port_2>,thrift://<metastore_IP_address_3>:<metastore_port_3>".
kudu.schema-emulation.enabledНетопция для включения или отключения эмуляции schema. По умолчанию она отключена (false), что означает, что все таблицы принадлежат schema по умолчанию.
kudu.schema-emulation.prefixНетПрефикс для эмуляции schema должен устанавливаться только когда kudu.schema-emulation.enabled = true. Префикс по умолчанию — пустая строка: .

ПРИМЕЧАНИЕ

Если вы используете Hive metastore, вы должны добавить соответствие между именами хостов и IP-адресами узлов вашего Hive metastore в путь /etc/hosts перед запросом данных Kudu. В противном случае Selena может не получить доступ к вашему Hive metastore при запуске запроса.

Примеры​

  • Следующие примеры создают Kudu catalog с именем kudu_catalog, тип metastore которого kudu.catalog.type установлен в kudu для запроса данных из вашего Kudu кластера.

    CREATE EXTERNAL CATALOG kudu_catalog
    PROPERTIES
    (
    "type" = "kudu",
    "kudu.master" = "localhost:7051",
    "kudu.catalog.type" = "kudu",
    "kudu.schema-emulation.enabled" = "true",
    "kudu.schema-emulation.prefix" = "impala::"
    );
  • Следующие примеры создают Kudu catalog с именем kudu_catalog, тип metastore которого kudu.catalog.type установлен в hive для запроса данных из вашего Kudu кластера.

    CREATE EXTERNAL CATALOG kudu_catalog
    PROPERTIES
    (
    "type" = "kudu",
    "kudu.master" = "localhost:7051",
    "kudu.catalog.type" = "hive",
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    "kudu.schema-emulation.enabled" = "true",
    "kudu.schema-emulation.prefix" = "impala::"
    );

Просмотр Kudu catalogs​

Вы можете использовать SHOW CATALOGS для запроса всех catalogs в текущем Selena кластере:

SHOW CATALOGS;

Вы также можете использовать SHOW CREATE CATALOG для запроса оператора создания external catalog. Следующий пример запрашивает оператор создания Kudu catalog с именем kudu_catalog:

SHOW CREATE CATALOG kudu_catalog;

Удаление Kudu catalog​

Вы можете использовать DROP CATALOG для удаления external catalog.

Следующий пример удаляет Kudu catalog с именем kudu_catalog:

DROP Catalog kudu_catalog;

Просмотр схемы таблицы Kudu​

Вы можете использовать один из следующих синтаксисов для просмотра схемы таблицы Kudu:

  • Просмотр схемы

    DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
  • Просмотр схемы и расположения из оператора CREATE

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

Запрос таблицы Kudu​

  1. Используйте SHOW DATABASES для просмотра баз данных в вашем Kudu кластере:

    SHOW DATABASES FROM <catalog_name>;
  2. Используйте SET CATALOG для переключения на целевой catalog в текущей сессии:

    SET CATALOG <catalog_name>;

    Затем используйте USE для указания активной базы данных в текущей сессии:

    USE <db_name>;

    Или вы можете использовать USE для прямого указания активной базы данных в целевом catalog:

    USE <catalog_name>.<db_name>;
  3. Используйте SELECT для запроса целевой таблицы в указанной базе данных:

    SELECT count(*) FROM <table_name> LIMIT 10;

Загрузка данных из Kudu​

Предположим, у вас есть OLAP таблица с именем olap_tbl, вы можете преобразовывать и загружать данные следующим образом:

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