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

Kudu catalog

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

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

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

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

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

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

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

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

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

ПРИМЕЧАНИЕ

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

Kerberos-аутентификация

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

  • Выполните команду kinit -kt keytab_path principal на каждом FE и каждом BE для получения Ticket Granting Ticket (TGT) от Key Distribution Center (KDC). Для выполнения этой команды вы должны иметь разрешения на доступ к вашему KUDU cluster и 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 cluster.

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

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

ПРИМЕЧАНИЕ

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

Примеры

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

    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 cluster.

    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 cluster:

SHOW CATALOGS;

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

SHOW CREATE CATALOG kudu_catalog;

Удаление Kudu catalog

Вы можете использовать DROP CATALOG для удаления внешнего 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 cluster:

    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;