MaxCompute Catalog
MaxCompute — корпоративное облачное хранилище данных на платформе Alibaba Cloud, предоставляемое по модели SaaS (программное обеспечение как услуга). Через открытый SDK для работы с хранилищем, предоставляемый MaxCompute, Doris может получать сведения о таблицах MaxCompute, выполнять запросы и записывать данные.
Сценарии использования
| Сценарий | Описание |
|---|---|
| Интеграция данных | Чтение данных MaxCompute и запись во внутренние таблицы Doris. |
| Обратная запись данных | Запись данных в таблицы MaxCompute с помощью команды INSERT. (Поддерживается с версии 4.1.0) |
Примечания по использованию
-
Начиная с версии 2.1.7, MaxCompute Catalog реализован на основе Open Storage SDK. В более ранних версиях использовался Tunnel API.
-
При использовании Open Storage SDK действуют определённые ограничения. См. раздел
Usage Limitationsв этом документе. -
В версиях Doris до 3.1.3 проект MaxCompute соответствует базе данных Doris. В версии 3.1.3 можно включить иерархию схем MaxCompute с помощью параметра
mc.enable.namespace.schema.
Настройка Catalog
Синтаксис
CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'max_compute',
{McAuthProperties},
{McRequiredProperties},
{McOptionalProperties},
{CommonProperties}
);
-
{McAuthProperties}Эти свойства определяют способ аутентификации Doris в MaxCompute при выполнении запросов и записи данных.
Примечание о версиях:
mc.auth.type,mc.ram_role_arnиmc.ecs_ram_roleподдерживаются с версии 4.0.4.Имя свойства Значение по умолчанию Описание Обязательность Поддерживаемые версии Doris mc.auth.typeak_skТип аутентификации. Поддерживаемые значения: ak_sk,ram_role_arnиecs_ram_role.Нет 4.0.4 и новее mc.access_keyНет AccessKey Alibaba Cloud. Обязательно, если mc.auth.typeимеет значениеak_sk(по умолчанию) илиram_role_arn.mc.secret_keyНет SecretKey Alibaba Cloud. Обязательно, если mc.auth.typeимеет значениеak_sk(по умолчанию) илиram_role_arn.mc.ram_role_arnНет ARN роли RAM в Alibaba Cloud. Обязательно, если mc.auth.typeимеет значениеram_role_arn.4.0.4 и новее mc.ecs_ram_roleНет Имя роли ECS RAM в Alibaba Cloud, назначенной экземпляру. Обязательно, если mc.auth.typeимеет значениеecs_ram_role.4.0.4 и новее Поддерживаемые значения
mc.auth.type:Значение Описание ak_skНепосредственное использование AccessKey и SecretKey Alibaba Cloud. ram_role_arnИспользование mc.access_keyиmc.secret_keyв качестве исходных учётных данных для вызова STSAssumeRoleс последующим доступом к MaxCompute по полученным временным учётным данным.ecs_ram_roleПолучение временных учётных данных из службы метаданных ECS. Убедитесь, что узлы Doris FE и BE, обращающиеся к MaxCompute, могут использовать роль, указанную в mc.ecs_ram_role.Правила проверки:
- Если
mc.auth.typeне задан, Doris используетak_sk. - Если
mc.auth.typeимеет значениеram_role_arn, необходимо настроитьmc.access_key,mc.secret_keyиmc.ram_role_arn. - Если
mc.auth.typeимеет значениеecs_ram_role, необходимо настроитьmc.ecs_ram_role. - При использовании
mc.access_keyиmc.secret_keyих необходимо задавать вместе.
Примеры SQL для разных типов аутентификации см. в разделе Базовый пример.
- Если
-
{McRequiredProperties}Имя свойства Описание Поддерживаемые версии Doris mc.default.projectИмя проекта MaxCompute, к которому требуется доступ. Создавать проекты и управлять ими можно в списке проектов MaxCompute. mc.regionРегион, в котором активирован MaxCompute. Соответствующий регион можно определить по Endpoint. До 2.1.7 (не включая) mc.endpointРегион, в котором активирован MaxCompute. Сведения о настройке см. ниже в разделе «Как получить Endpoint и квоту». 2.1.7 и новее -
{McOptionalProperties}Имя свойства Значение по умолчанию Описание Поддерживаемые версии Doris mc.tunnel_endpointНет См. раздел «Собственный адрес службы» в приложении. До 2.1.7 (не включая) mc.odps_endpointНет См. раздел «Собственный адрес службы» в приложении. До 2.1.7 (не включая) mc.quotapay-as-you-goИмя квоты. Сведения о настройке см. ниже в разделе «Как получить Endpoint и квоту». 2.1.7 и новее mc.split_strategybyte_sizeЗадаёт способ разбиения на Split. Можно выбрать разбиение по размеру в байтах byte_sizeили по количеству строкrow_count.2.1.7 и новее mc.split_byte_size268435456Размер файла, считываемого каждым Split, в байтах. По умолчанию 256 МБ. Действует только при "mc.split_strategy" = "byte_size".2.1.7 и новее mc.split_row_count1048576Количество строк, считываемых каждым Split. Действует только при "mc.split_strategy" = "row_count".2.1.7 и новее mc.split_cross_partitionfalseМогут ли создаваемые Split охватывать несколько партиций. 2.1.8 и новее mc.connect_timeout10sТайм-аут подключения к MaxCompute. 2.1.8 и новее mc.read_timeout120sТайм-аут чтения из MaxCompute. 2.1.8 и новее mc.retry_count4Количество повторных попыток после истечения тайм-аута. 2.1.8 и новее mc.datetime_predicate_push_downtrueРазрешать ли передачу предикатов в источник для типов timestamp/timestamp_ntz. При синхронизации этих двух типов Doris теряет точность (9 -> 6). Поэтому, если точность исходных данных превышает 6 знаков, передача предикатов в источник может привести к неточным результатам.2.1.9/3.0.5 и новее mc.account_formatnameСистемы учётных записей международного и китайского сайтов Alibaba Cloud различаются. Если при использовании международного сайта возникает ошибка вида user 'RAM$xxxxxx:xxxxx' is not a valid aliyun account, можно установить для этого параметра значениеid.3.0.9/3.1.1 и новее mc.enable.namespace.schemafalseВключать ли поддержку иерархии схем MaxCompute. См.: https://help.aliyun.com/zh/maxcompute/user-guide/schema-related-operations 3.1.3 и новее mc.max_field_size_bytes8388608(8 МБ)Максимально допустимый размер одного поля в байтах в сеансе записи. Если записываемые данные содержат большие строковые или двоичные поля, запись может завершиться ошибкой при превышении этого значения. Значение можно увеличить в соответствии с фактическими данными. 4.1.0 и новее test_connectionfalseПроверять ли доступность соединения при создании Catalog. Если задано значение true, Doris проверяет доступность AK/SK, Endpoint иmc.project; если включено свойствоmc.enable.namespace.schema, список схем также должен быть доступен. ОперацияCREATE CATALOGнемедленно завершается ошибкой, если проверка не пройдена.4.1.4 и новее Начиная с версии 4.1.4, свойства
mc.connect_timeout,mc.read_timeoutиmc.retry_countдействительно применяются к базовому REST-клиенту. В более ранних версиях эти три свойства можно было задать, но они не влияли на его работу.-
mc.max_field_size_bytesПо умолчанию MaxCompute допускает не более 8 МБ на поле. Если записываемые данные содержат большие строковые или двоичные поля, запись может завершиться ошибкой.
Чтобы изменить это ограничение, сначала выполните следующую команду в редакторе SQL консоли MaxCompute:
setproject odps.sql.cfile2.field.maxsize=262144;Эта команда изменяет максимальный размер одного поля. Единица измерения — КБ, максимальное значение — 262144.
Затем задайте для
mc.max_field_size_bytesсоответствующее значение в байтах в свойствах Doris Catalog (оно не должно превышать значение, установленное в MaxCompute).
-
-
{CommonProperties}Раздел CommonProperties предназначен для общих свойств. См. раздел «Общие свойства» в обзоре Catalog.
Кеш метаданных
Для повышения производительности доступа к внешним источникам данных Apache Doris кеширует метаданные MaxCompute. Метаданные включают схемы таблиц и списки партиций.
В версиях до Doris 4.1.x кеширование метаданных в основном управляется глобально через параметры конфигурации FE. Подробнее см. в разделе Кеш метаданных.
Начиная с Doris 4.1.x, внешний кеш метаданных MaxCompute Catalog настраивается с помощью унифицированных ключей meta.cache.*. Ниже описаны элементы кеша для текущей версии; в Doris 4.1.x и 4.2.x используется другой набор элементов, описанный в версии 4.x этой страницы.
Настройка свойств кеша
Для каждого элемента кеша используется единый формат ключа настройки: meta.cache.<engine>.<entry>.{enable,ttl-second,capacity,max-weight}. Для MaxCompute значение <engine> — max_compute.
| Свойство | Пример | Значение |
|---|---|---|
enable | true/false | Включать ли этот элемент кеша. |
ttl-second | 600, 0, -1 | 0 отключает элемент (применяется немедленно и позволяет видеть актуальные данные); -1 означает отсутствие срока действия; другие положительные целые числа задают TTL в секундах с момента доступа. |
capacity | 10000 | Максимальное количество записей в кеше. 0 отключает элемент. |
max-weight | 1GB | Поддерживается с Doris 4.1.4. Необязательное ограничение оценочного объёма памяти, занимаемого элементом. Значение должно быть положительным; 0 не допускается. Поддерживается только элементами, отмеченными ниже. |
Условия работы: элемент действует, если enable=true, ttl-second != 0 и capacity > 0. Ограничение памяти на уровне FE, Catalog или отдельного элемента дополнительно регулирует добавление записей с учётом оценочного потребления памяти; см. Управление памятью внешнего кеша метаданных.
Модули кеша
MaxCompute Catalog включает следующий элемент кеша с поддержкой max-weight:
Элемент (<entry>) | Префикс ключа свойства | ENTRY_NAME | Кешируемое содержимое и влияние | Значения по умолчанию: включение / TTL / ёмкость |
|---|---|---|---|---|
partition | meta.cache.max_compute.partition. | max-compute-partition | Списки партиций таблицы. Влияет на отсечение и перечисление партиций; при отключении новые партиции видны сразу. | true / 600 с / 10000 |
Схемы столбцов таблиц MaxCompute кешируются общим механизмом default (meta.cache.default.schema.*).
Соответствие и преобразование устаревших параметров
| Устаревший ключ свойства | Унифицированный ключ | Описание |
|---|---|---|
schema.cache.ttl-second | meta.cache.default.schema.ttl-second | Срок действия кеша схем таблиц |
Рекомендации
- Доступ к актуальным данным в реальном времени: чтобы каждый запрос видел актуальные партиции таблиц MaxCompute, установите TTL кеша партиций в
0.-- Disable the partition listing cache to detect the latest partitions of MaxCompute tables
ALTER CATALOG mc_ctl SET PROPERTIES ("meta.cache.max_compute.partition.ttl-second" = "0"); - Примечание: после успешного изменения свойств Catalog затронутые кеши метаданных сбрасываются и при следующем обращении создаются заново с новой конфигурацией. Изменение
meta.cache.max-weightилиschema.cache.ttl-secondсбрасывает все кеши Catalog; изменениеmeta.cache.<engine>.<entry>.*сбрасывает кеши соответствующего механизма. Уже выполняющиеся запросы не затрагиваются.
Наблюдаемость
Метрики кеша доступны в системной таблице information_schema.catalog_meta_cache_statistics. В столбце ENTRY_NAME отображаются имена, перечисленные в таблице выше, а строка механизма default соответствует общему кешу схем таблиц:
SELECT engine_name, entry_name,
effective_enabled, ttl_second, capacity,
estimated_size, hit_rate, max_weight, estimated_weight
FROM information_schema.catalog_meta_cache_statistics
WHERE catalog_name = 'mc_ctl'
ORDER BY engine_name, entry_name;
См. документацию по этой системной таблице: catalog_meta_cache_statistics.
Поддерживаемые версии MaxCompute
Поддерживается только версия MaxCompute для публичного облака. По вопросам поддержки версии для частного облака обратитесь за помощью в сообщество Doris.
Поддерживаемые таблицы MaxCompute
-
Поддерживается чтение партиционированных таблиц, кластеризованных таблиц и материализованных представлений.
-
Не поддерживается чтение внешних таблиц MaxCompute, логических представлений и Delta Tables.
Сопоставление иерархий
-
Если
mc.enable.namespace.schemaимеет значениеfalseDoris MaxCompute Catalog N/A База данных Проект Таблица Таблица -
Если
mc.enable.namespace.schemaимеет значениеtrueDoris MaxCompute Catalog Проект База данных Схема Таблица Таблица
Сопоставление типов столбцов
| Тип MaxCompute | Тип Doris | Примечание |
|---|---|---|
| boolean | boolean | |
| tiny | tinyint | |
| tinyint | tinyint | |
| smallint | smallint | |
| int | int | |
| bigint | bigint | |
| float | float | |
| double | double | |
| decimal(P, S) | decimal(P, S) | 1 <= P <= 38, 0 <= S <= 18 |
| char(N) | char(N) | |
| varchar(N) | varchar(N) | |
| string | string | |
| date | date | |
| datetime | datetime(3) | Фиксированное сопоставление с точностью 3. Часовой пояс можно задать с помощью SET [GLOBAL] time_zone = 'Asia/Shanghai'. |
| timestamp_ntz | datetime(6) | Точность timestamp_ntz в MaxCompute составляет 9, а максимальная точность DATETIME в Doris — только 6, поэтому лишние разряды отсекаются при чтении данных. |
| timestamp | datetime(6) | Поддерживается с версии 2.1.9/3.0.5. Точность timestamp в MaxCompute составляет 9, а максимальная точность DATETIME в Doris — только 6, поэтому лишние разряды отсекаются при чтении данных. |
| array | array | |
| map | map | |
| struct | struct | |
| другие | UNSUPPORTED |
Базовый пример
Аутентификация по умолчанию с помощью ak_sk:
CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.default.project' = 'project',
'mc.access_key' = 'AKxxxxx',
'mc.secret_key' = 'SKxxxxx',
'mc.endpoint' = 'http://service.cn-beijing-vpc.maxcompute.aliyun-inc.com/api'
);
ram_role_arn — аутентификация (4.0.4+):
CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.default.project' = 'project',
'mc.auth.type' = 'ram_role_arn',
'mc.access_key' = 'AKxxxxx',
'mc.secret_key' = 'SKxxxxx',
'mc.ram_role_arn' = 'acs:ram::<your_account_id>:role/<your_role_name>',
'mc.endpoint' = 'http://service.cn-beijing-vpc.maxcompute.aliyun-inc.com/api'
);
ecs_ram_role — аутентификация (4.0.4+):
CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.default.project' = 'project',
'mc.auth.type' = 'ecs_ram_role',
'mc.ecs_ram_role' = '<your_ecs_ram_role_name>',
'mc.endpoint' = 'http://service.cn-beijing-vpc.maxcompute.aliyun-inc.com/api'
);
Если используется версия до 2.1.7 (не включая), выполните следующий оператор (рекомендуется обновиться до версии 2.1.8 или новее):
CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.region' = 'cn-beijing',
'mc.default.project' = 'project',
'mc.access_key' = 'ak',
'mc.secret_key' = 'sk',
'mc.odps_endpoint' = 'http://service.cn-beijing.maxcompute.aliyun-inc.com/api',
'mc.tunnel_endpoint' = 'http://dt.cn-beijing.maxcompute.aliyun-inc.com'
);
С поддержкой схем:
CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.region' = 'cn-beijing',
'mc.default.project' = 'project',
'mc.access_key' = 'ak',
'mc.secret_key' = 'sk',
'mc.odps_endpoint' = 'http://service.cn-beijing.maxcompute.aliyun-inc.com/api',
'mc.tunnel_endpoint' = 'http://dt.cn-beijing.maxcompute.aliyun-inc.com',
'mc.enable.namespace.schema' = 'true'
);
Выполнение запросов
Простой запрос
-- 1. Switch to Catalog, use database and query
SWITCH mc_ctl;
USE mc_db;
SELECT * FROM mc_tbl LIMIT 10;
-- 2. Use mc database directly
USE mc_ctl.mc_db;
SELECT * FROM mc_tbl LIMIT 10;
-- 3. Use full qualified name to query
SELECT * FROM mc_ctl.mc_db.mc_tbl LIMIT 10;
Оптимизация запросов
-
Оптимизация запросов с LIMIT (с версии 4.1.0)
Этот параметр применим только в сценариях, где часто используется
LIMIT 1для проверки наличия данных.Если при запросе к таблицам MaxCompute используются только предикаты равенства по столбцам партиционирования (
=илиIN) и предложениеLIMIT, можно включить переменную сеансаenable_mc_limit_split_optimizationдля оптимизации стратегии формирования Split.При включении этой настройки система использует стратегию
row_offset, чтобы прочитать только необходимое количество строк, вместо формирования Split для всех данных. Это позволяет сократить количество Split с множества до одного и значительно уменьшить задержку выполнения запроса.Оптимизация применяется к запросам вида:
SELECT * FROM mc_tbl WHERE pt = 'value' LIMIT 100;
SELECT * FROM mc_tbl WHERE pt IN ('v1', 'v2') LIMIT 100;Для включения:
SET enable_mc_limit_split_optimization = true;По умолчанию этот параметр отключён. Оптимизация не действует, если запрос содержит фильтры по столбцам, не участвующим в партиционировании, предикаты, отличные от равенства (например,
>,<,!=), или не содержит предложенияLIMIT.
Операции записи
Начиная с версии 4.1.0, Doris поддерживает запись в таблицы MaxCompute. С помощью стандартных операторов INSERT можно через Doris записывать данные из других источников непосредственно в таблицы MaxCompute.
- Это экспериментальная возможность, поддерживаемая с версии 4.1.0.
- Поддерживается запись как в партиционированные, так и в непартиционированные таблицы.
- Не поддерживается запись в кластеризованные таблицы, транзакционные таблицы, Delta Tables и внешние таблицы.
INSERT INTO
Операция INSERT добавляет данные в целевую таблицу.
Пример:
INSERT INTO mc_tbl values (val1, val2, val3, val4);
INSERT INTO mc_tbl SELECT col1, col2 FROM internal.db1.tbl1;
INSERT INTO mc_tbl(col1, col2) values (val1, val2);
INSERT INTO mc_tbl(col1, col2, partition_col1, partition_col2) values (1, 2, "beijing", "2023-12-12");
-- Write to specified partition (you can specify only some partition columns, with remaining partitions written dynamically)
INSERT INTO mc_tbl PARTITION(ds='20250201') SELECT id, name FROM source_tbl;
INSERT INTO mc_tbl PARTITION(ds='20250101', region='bj') VALUES (1, 'v1'), (2, 'v2');
INSERT OVERWRITE
INSERT OVERWRITE полностью заменяет существующие данные таблицы новыми.
INSERT OVERWRITE TABLE mc_tbl VALUES(val1, val2, val3, val4);
INSERT OVERWRITE TABLE mc_tbl(col1, col2) SELECT col1, col2 FROM internal.db1.tbl1;
-- Write to specified partition
INSERT OVERWRITE TABLE mc_tbl PARTITION(ds='20250101') VALUES (10, 'new1');
CTAS
Можно создать таблицу MaxCompute и записать в неё данные с помощью оператора CTAS:
CREATE TABLE mc_tbl AS SELECT * FROM other_table;
Управление базами данных и таблицами
Начиная с версии 4.1.0, Doris поддерживает создание и удаление баз данных и таблиц MaxCompute.
- Это экспериментальная возможность, поддерживаемая с версии 4.1.0.
- Поддерживается создание и удаление партиционированных и непартиционированных таблиц.
- Не поддерживается создание кластеризованных таблиц, транзакционных таблиц, Delta Tables и внешних таблиц.
При создании или удалении баз данных и таблиц Doris вызывает соответствующий API MaxCompute. После завершения операции требуется некоторое время, прежде чем изменения метаданных на стороне MaxCompute станут полностью видны последующим операциям.
Эта возможность доступна только в том случае, если свойство mc.enable.namespace.schema имеет значение true.
Создание и удаление баз данных
Можно переключиться на соответствующий Catalog с помощью оператора SWITCH и выполнить оператор CREATE DATABASE:
SWITCH mc;
CREATE DATABASE [IF NOT EXISTS] mc_schema;
Также можно создать базу данных, указав полное имя:
CREATE DATABASE [IF NOT EXISTS] mc.mc_schema;
Удаление базы данных:
DROP DATABASE [IF EXISTS] mc.mc_schema;
При удалении базы данных MaxCompute также удаляются все содержащиеся в ней таблицы.
Создание и удаление таблиц
-
Создание
Doris поддерживает создание партиционированных и непартиционированных таблиц в MaxCompute.
Пример:
CREATE TABLE mc_schema.mc_tbl1 (
bool_col BOOLEAN,
int_col INT,
bigint_col BIGINT,
float_col FLOAT,
double_col DOUBLE,
decimal_col DECIMAL(18,6),
string_col STRING,
varchar_col VARCHAR(200),
char_col CHAR(50),
date_col DATE,
datetime_col DATETIME,
arr_col ARRAY<STRING>,
map_col MAP<STRING, STRING>,
struct_col STRUCT<f1:STRING, f2:INT>
);
CREATE TABLE mc_schema.mc_tbl2 (
id INT,
val STRING,
ds STRING,
region STRING
)
PARTITION BY (ds, region)(); -
Удаление
Удалить таблицу MaxCompute можно с помощью оператора
DROP TABLE. В настоящее время при удалении таблицы также удаляются её данные, включая данные партиций.Пример:
DROP TABLE [IF EXISTS] mc_tbl;
Часто задаваемые вопросы
Как получить Endpoint и квоту (для Doris 2.1.7 и новее)
-
При использовании выделенных групп ресурсов для службы передачи данных
Чтобы предоставить необходимые разрешения, см. раздел «2. Авторизация» в главе «Использование выделенных групп ресурсов службы данных» этого документа. В списке «Управление квотами» найдите и скопируйте соответствующее значение
QuotaNameи задайте"mc.quota" = "QuotaName". В этом случае для доступа к MaxCompute можно использовать VPC или публичную сеть, однако в VPC пропускная способность гарантирована, а ресурсы пропускной способности публичной сети ограничены. -
При использовании оплаты по мере использования
См. раздел «Использование Open Storage (оплата по мере использования)» в этом документе, чтобы включить Open Storage (Storage API) и предоставить разрешения пользователю, которому принадлежат AK и SK. В этом случае
mc.quotaимеет значение по умолчаниюpay-as-you-go, и дополнительно задавать его не требуется. При оплате по мере использования доступ к MaxCompute возможен только через VPC; доступ через публичную сеть недоступен. Доступ к MaxCompute через публичную сеть могут использовать только пользователи с предоплатой. -
Настройте
mc.endpointв соответствии с «Таблицей Endpoint по регионам» в документации Alibaba Cloud по EndpointПользователям, обращающимся через VPC, необходимо настроить
mc.endpointпо столбцу «Endpoint сети VPC» в таблице «Endpoint по регионам (подключение через сеть Alibaba Cloud VPC)». Пользователи, обращающиеся через публичную сеть, могут выбрать значение из столбца «Endpoint классической сети» в таблице «Endpoint по регионам (подключение через классическую сеть Alibaba Cloud)» или из столбца «Endpoint внешней сети» в таблице «Endpoint по регионам (подключение через внешнюю сеть)» для настройкиmc.endpoint.
Собственный адрес службы (для версий до Doris 2.1.7)
В версиях до Doris 2.1.7 для взаимодействия с MaxCompute используется Tunnel SDK, поэтому требуются следующие два свойства Endpoint:
-
mc.odps_endpoint: Endpoint MaxCompute, используемый для получения метаданных MaxCompute (сведений о базах данных и таблицах). -
mc.tunnel_endpoint: Endpoint Tunnel, используемый для чтения данных MaxCompute.
По умолчанию MaxCompute Catalog формирует адреса Endpoint на основе mc.region и mc.public_access.
Формат формируемых адресов:
mc.public_access | mc.odps_endpoint | mc.tunnel_endpoint |
|---|---|---|
false | http://service.{mc.region}.maxcompute.aliyun-inc.com/api | http://dt.{mc.region}.maxcompute.aliyun-inc.com |
true | http://service.{mc.region}.maxcompute.aliyun.com/api | http://dt.{mc.region}.maxcompute.aliyun.com |
Пользователи также могут отдельно задать mc.odps_endpoint и mc.tunnel_endpoint, чтобы настроить собственные адреса служб. Это подходит для сред с частным развёртыванием MaxCompute.
Сведения о настройке Endpoint MaxCompute и Endpoint Tunnel см. в разделе Endpoint для разных регионов и способов сетевого подключения.
Управление использованием ресурсов
Пользователи могут регулировать количество параллельных запросов на уровне таблицы, изменяя две переменные сеанса parallel_pipeline_task_num и num_scanner_threads, чтобы управлять потреблением ресурсов службы передачи данных. Соответствующее количество параллельных запросов равно max(parallel_pipeline_task_num * be num * num_scanner_threads).
Примечания:
-
Этот способ позволяет управлять количеством параллельных обращений только к одной таблице в рамках одного запроса и не позволяет управлять использованием ресурсов несколькими операторами SQL.
-
Уменьшение количества параллельных обращений увеличивает время выполнения запроса.
Рекомендации по записи
-
По возможности рекомендуется записывать данные в явно указанные партиции, например
INSERT INTO mc_tbl PARTITION(ds='20250201'). Если партиция не указана, из-за ограничений MaxCompute Storage API данные каждой партиции должны записываться последовательно. Поэтому в плане выполнения данные сортируются по столбцам партиционирования, что при большом объёме данных может потребовать значительных ресурсов памяти и привести к ошибке записи. -
При записи без указания партиции не задавайте
SET enable_strict_consistency_dml = false. Эта настройка принудительно удаляет узел сортировки, из-за чего данные партиций записываются с нарушением порядка, что в итоге приводит к ошибке MaxCompute. -
Не добавляйте предложение
LIMIT. При добавлении предложенияLIMITDoris использует для записи только один поток, чтобы гарантировать заданное количество записываемых строк. Это можно использовать для тестирования на небольших объёмах, но при большом значенииLIMITпроизводительность записи будет низкой.
Ошибка записи: Data invalid: ODPS-0020041:StringOutOfMaxLength
См. описание mc.max_field_size_bytes.