Перейти к основному содержимому
Версия: 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;