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

[Предварительная версия] MaxCompute catalog

Selena поддерживает каталоги Alibaba Cloud MaxCompute (ранее известный как ODPS) начиная с версии 1.5.0.

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

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

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

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

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

Перед созданием MaxCompute catalog убедитесь, что ваш кластер Selena может правильно получить доступ к вашему сервису MaxCompute.

Создание MaxCompute catalog

Синтаксис

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

Параметры

catalog_name

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

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

comment

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

type

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

CatalogParams

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

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

ПараметрОбязательныйОписание
odps.endpointДаАдрес подключения (а именно, endpoint) для сервиса MaxCompute. Вам необходимо настроить endpoint в соответствии с регионом, выбранным при создании проекта MaxCompute, а также режимом сетевого подключения. Подробности об endpoints, используемых в различных регионах и режимах сетевого подключения, см. в Endpoint. Обратите внимание, что в настоящее время поддерживаются только два режима сетевого подключения Alibaba Cloud для обеспечения наилучшего опыта: VPC и классическая сеть.
odps.projectДаИмя проекта MaxCompute, к которому вы хотите получить доступ. Если вы создали рабочее пространство в стандартном режиме, обратите внимание на различия между именами проектов для производственной среды и среды разработки (_dev) при настройке этого параметра. Вы можете войти в MaxCompute Console и получить имя проекта MaxCompute на странице Workspace > Project Management.
odps.access.idДаAccessKey ID учетной записи Alibaba Cloud или пользователя RAM. Вы можете перейти на страницу AccessKey Management, чтобы получить AccessKey ID.
odps.access.keyДаAccessKey Secret, соответствующий AccessKey ID. Вы можете перейти на страницу AccessKey Management, чтобы получить AccessKey Secret.
odps.tunnel.endpointНетСсылка для доступа к публичной сети для сервиса Tunnel. Если вы не настроили Tunnel endpoint, Tunnel автоматически направит к Tunnel endpoint, соответствующему сети, где расположен сервис MaxCompute. Если вы настроили Tunnel endpoint, он будет использоваться как настроено и не будет автоматически направляться.
odps.tunnel.quotaДаИмя квоты, которая используется для доступа к MaxCompute. MaxCompute предоставляет два типа ресурсов для передачи данных: эксклюзивная группа ресурсов для MaxCompute Tunnel (подписка) и storage API (оплата по мере использования). Вы можете выполнить следующие операции, чтобы получить имя квоты на основе типа ресурса.

Эксклюзивная группа ресурсов для MaxCompute Tunnel: Войдите в консоль MaxCompute. В верхней панели навигации выберите регион. В левой панели навигации выберите Workspace > Quotas, чтобы просмотреть доступные квоты. Для получения дополнительной информации см. Управление квотами для вычислительных ресурсов в консоли MaxCompute.

Storage API: Войдите в консоль MaxCompute. В левой панели навигации выберите Tenants > Tenant Property. На странице Tenants включите Storage API Switch. Для получения дополнительной информации см. Использование storage API (оплата по мере использования). Имя по умолчанию для storage API — "pay-as-you-go".

ScanParams

Набор параметров о том, как Selena получает доступ к файлам, хранящимся в кластере MaxCompute. Этот набор параметров является необязательным.

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

ПараметрОбязательныйОписание
odps.split.policyНетПолитика сегментирования, используемая при сканировании данных.
Допустимые значения: size (сегментирование по размеру данных) и row_offset (сегментирование по количеству строк). Значение по умолчанию: size.
odps.split.row.countНетМаксимальное количество строк на сегмент, когда odps.split.policy установлен в row_offset.
Значение по умолчанию: 4 * 1024 * 1024 = 4194304.

CachingMetaParams

Набор параметров о том, как Selena кэширует метаданные Hive. Этот набор параметров является необязательным.

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

ПараметрОбязательныйОписание
odps.cache.table.enableНетУказывает, кэширует ли Selena метаданные таблиц MaxCompute. Допустимые значения: true и false. Значение по умолчанию: true. Значение true включает кэш, а значение false отключает кэш.
odps.cache.table.expireНетИнтервал времени в секундах, через который Selena автоматически удаляет кэшированные метаданные таблиц или разделов MaxCompute. Значение по умолчанию: 86400 (24 часа).
odps.cache.table.sizeНетКоличество записей метаданных таблиц MaxCompute, которые кэширует Selena. Значение по умолчанию: 1000.
odps.cache.partition.enableНетУказывает, кэширует ли Selena метаданные всех разделов для таблицы MaxCompute. Допустимые значения: true и false. Значение по умолчанию: true. Значение true включает кэш, а значение false отключает кэш.
odps.cache.partition.expireНетИнтервал времени в секундах, через который Selena автоматически удаляет кэшированные метаданные всех разделов для таблицы MaxCompute. Значение по умолчанию: 86400 (24 часа).
odps.cache.partition.sizeНетКоличество таблиц MaxCompute, для которых Selena кэширует метаданные всех разделов. Значение по умолчанию: 1000.
odps.cache.table-name.enableНетУказывает, кэширует ли Selena информацию о таблицах из проекта MaxCompute. Допустимые значения: true и false. Значение по умолчанию: false. Значение true включает кэш, а значение false отключает кэш.
odps.cache.table-name.expireНетИнтервал времени в секундах, через который Selena автоматически удаляет кэшированную информацию о таблицах из проекта MaxCompute. Значение по умолчанию: 86400 (24 часа).
odps.cache.table-name.sizeНетКоличество проектов MaxCompute, которые кэширует Selena. Значение по умолчанию: 1000.

Примеры

Следующий пример создает MaxCompute catalog с именем odps_catalog, который использует odps_project в качестве проекта хранилища.

CREATE EXTERNAL CATALOG odps_catalog 
PROPERTIES (
"type"="odps",
"odps.access.id"="<maxcompute_user_access_id>",
"odps.access.key"="<maxcompute_user_access_key>",
"odps.endpoint"="<maxcompute_server_endpoint>",
"odps.project"="odps_project"
);

Просмотр MaxCompute catalogs

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

SHOW CATALOGS;

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

SHOW CREATE CATALOG odps_catalog;

Удаление MaxCompute catalog

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

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

DROP CATALOG odps_catalog;

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

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

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

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

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

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

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

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

    SET CATALOG <catalog_name>;

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

    USE <db_name>;

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

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

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

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

Предположим, что в вашем кластере Selena есть OLAP таблица с именем olap_tbl, а в вашем кластере MaxCompute есть таблица с именем mc_table. Вы можете преобразовать и загрузить данные из таблицы MaxCompute mc_table в таблицу Selena olap_tbl следующим образом:

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

Сопоставление типов данных

MaxCompute catalogs сопоставляют типы данных MaxCompute с типами данных Selena. В следующей таблице показано сопоставление между типами данных MaxCompute и типами данных Selena.

Тип данных MaxComputeТип данных Selena
BOOLEANBOOLEAN
TINYINTTINYINT
SMALLINTSMALLINT
INTINT
BIGINTBIGINT
FLOATFLOAT
DOUBLEDOUBLE
DECIMAL(p, s)DECIMAL(p, s)
STRINGVARCHAR(1073741824)
VARCHAR(n)VARCHAR(n)
CHAR(n)CHAR(n)
JSONVARCHAR(1073741824)
BINARYVARBINARY
DATEDATE
DATETIMEDATETIME
TIMESTAMPDATETIME
ARRAYARRAY
MAPMAP
STRUCTSTRUCT
примечание

Тип TIMESTAMP потеряет точность из-за преобразования типов в Selena.

Сбор статистики CBO

В текущей версии MaxCompute catalogs не могут автоматически собирать статистику CBO для таблиц MaxCompute, и, следовательно, оптимизатор может быть не в состоянии генерировать оптимальные планы запросов. Таким образом, ручное сканирование статистики CBO для таблиц MaxCompute и их импорт в Selena может эффективно ускорить запросы.

Предположим, что в вашем кластере MaxCompute есть таблица MaxCompute с именем mc_table. Вы можете создать задачу ручного сбора для сбора статистики CBO, используя ANALYZE TABLE:

ANALYZE TABLE mc_table;

Ручное обновление кэша метаданных

По умолчанию Selena кэширует метаданные MaxCompute для улучшения производительности запросов. Поэтому после внесения изменений в схему или других обновлений в таблицу MaxCompute вы можете использовать REFRESH EXTERNAL TABLE для ручного обновления метаданных таблицы, тем самым обеспечивая, что Selena может своевременно получить самые последние метаданные:

REFRESH EXTERNAL TABLE <table_name> [PARTITION ('partition_name', ...)]