[Предварительная версия] 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
-
Используйте SHOW DATABASES для просмотра баз данных в вашем кластере MaxCompute:
SHOW DATABASES FROM <catalog_name>; -
Используйте SET CATALOG для переключения на целевой каталог в текущей сессии:
SET CATALOG <catalog_name>;Затем используйте USE для указания активной базы данных в текущей сессии:
USE <db_name>;Или вы можете использовать USE для прямого указания активной базы данных в целевом каталоге:
USE <catalog_name>.<db_name>; -
Используйте 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 |
|---|---|
| BOOLEAN | BOOLEAN |
| TINYINT | TINYINT |
| SMALLINT | SMALLINT |
| INT | INT |
| BIGINT | BIGINT |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
| DECIMAL(p, s) | DECIMAL(p, s) |
| STRING | VARCHAR(1073741824) |
| VARCHAR(n) | VARCHAR(n) |
| CHAR(n) | CHAR(n) |
| JSON | VARCHAR(1073741824) |
| BINARY | VARBINARY |
| DATE | DATE |
| DATETIME | DATETIME |
| TIMESTAMP | DATETIME |
| ARRAY | ARRAY |
| MAP | MAP |
| STRUCT | STRUCT |
Тип 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', ...)]