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

MaxCompute catalog

Selena поддерживает catalogs Alibaba Cloud MaxCompute (ранее известные как ODPS) начиная с версии v1.5.2.

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

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

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

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

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

Перед созданием MaxCompute catalog убедитесь, что ваш Selena cluster может правильно получить доступ к вашему сервису 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 cluster.

Следующая таблица описывает параметр, который вам нужно настроить в 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 console. В верхней панели навигации выберите регион. В боковой панели навигации выберите Workspace > Quotas, чтобы просмотреть доступные квоты. Для получения дополнительной информации см. Manage quotas for computing resources in the MaxCompute console.

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

ScanParams

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

Следующая таблица описывает параметр, который вам нужно настроить в 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 для запроса всех catalogs в текущем Selena cluster:

SHOW CATALOGS;

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

SHOW CREATE CATALOG odps_catalog;

Удаление MaxCompute catalog

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

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

Предположим, что в вашем Selena cluster есть OLAP таблица с именем olap_tbl и в вашем MaxCompute cluster есть таблица с именем 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 cluster есть таблица 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', ...)]