O StarRocks Connector utiliza o mecanismo de External Catalog para acessar fontes de dados do MaxCompute de forma transparente, sem importar dados ou criar tabelas externas, e executar consultas SQL complexas. Isso aumenta a eficiência da análise de dados e reduz a complexidade e o custo de operações e manutenção (O&M). Este tópico descreve como acessar o MaxCompute usando o StarRocks Connector.
Informações básicas
O StarRocks é um banco de dados MPP (Massively Parallel Processing) de alta velocidade e última geração, compatível com diversas cargas de trabalho analíticas empresariais, como análise multidimensional baseada em OLAP (Online Analytical Processing), criação de relatórios personalizados, análise de dados em tempo real e consultas ad hoc. Para obter detalhes sobre o StarRocks, consulte Introdução ao StarRocks. O StarRocks oferece suporte ao recurso Catalog (catálogo de dados), que permite gerenciar dados internos e externos em um único sistema, facilitando o acesso e a consulta a dados armazenados em várias fontes externas. Para mais informações, consulte Visão geral do Catalog.
Pré-requisitos
Implante um cluster StarRocks versão 3.2.3 ou posterior e garanta que o cluster consiga acessar corretamente o service MaxCompute. Para mais informações sobre como implantar um cluster StarRocks, consulte Implantar um cluster StarRocks shared-nothing usando Docker Compose.
Adquira um grupo de recursos dedicado do Data Transmission Service (assinatura) ou ative recursos de armazenamento aberto (pagamento conforme o uso).
Limites
Suporta leitura de tabelas padrão, tabelas particionadas, tabelas clusterizadas, Delta Tables e visualizações materializadas. Não suporta leitura de tabelas externas ou visualizações lógicas.
Não suporta leitura de tipos de dados JSON.
Suporta apenas projetos do MaxCompute com Schema desativado. Para detalhes sobre Schema, consulte Schema operations.
Crie um MaxCompute Catalog
Faça login no StarRocks e crie um MaxCompute Catalog. Para mais informações sobre External Catalogs, consulte Criar External Catalog.
Sintaxe
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
Descrição dos parâmetros
-
Parâmetros comuns
Parâmetro
Obrigatório
Descrição
catalog_name
Sim
Nome do MaxCompute Catalog. Siga estas regras de nomenclatura:
-
Deve conter apenas letras (a–z ou A–Z), dígitos (0–9) ou sublinhados (_) e começar com uma letra.
-
O comprimento máximo é de 1023 caracteres.
-
Os nomes de Catalog diferenciam maiúsculas de minúsculas.
type
Sim
Tipo da fonte de dados. Defina este parâmetro como
odps.comment
Não
Descrição do MaxCompute Catalog.
CatalogParams
Sim
Parâmetros para o StarRocks acessar o MaxCompute.
ScanParams
Não
Parâmetros para o StarRocks acessar o armazenamento de arquivos do MaxCompute.
CachingMetaParams
Não
Parâmetros que definem a política de cache de metadados.
-
-
Parâmetros CatalogParams
Parâmetro
Obrigatório
Descrição
odps.endpoint
Sim
Endereço de conexão do service MaxCompute. Configure o endpoint com base na região e no método de conectividade de rede selecionados durante a criação do projeto MaxCompute. Para valores de endpoint por região e tipo de rede, consulte Endpoint.
ImportanteAtualmente, apenas redes VPC da Alibaba Cloud são suportadas.
odps.project
Sim
Nome do projeto MaxCompute. Faça login no MaxCompute console e acesse a página para obter o nome do projeto.
NotaSe você criou um workspace no modo padrão, distinga os nomes de projeto do ambiente de produção e do ambiente de desenvolvimento (_dev) ao configurar este parâmetro.
odps.access.id
Sim
AccessKey ID da sua conta Alibaba Cloud ou usuário do Resource Access Management (RAM). Acesse a página de gerenciamento de AccessKey para obter o AccessKey ID.
odps.access.key
Sim
AccessKey secret correspondente ao AccessKey ID.
odps.tunnel.quota
Sim
-
Parâmetros ScanParams
Parâmetro
Obrigatório
Descrição
odps.split.policy
Não
Estratégia de sharding usada durante a varredura de dados. Valores válidos:
-
size (padrão): faz o sharding por tamanho de dados. Valor padrão: 256 MB.
-
row_offset: faz o sharding por contagem de linhas.
NotaA estratégia de sharding afeta significativamente a concorrência de varredura de dados no mecanismo de computação. Se a estratégia padrão não atender às suas necessidades, escolha a estratégia
row_offsete ajuste-a usando o parâmetroodps.split.row.count.odps.split.row.count
Não
Número máximo de linhas por shard. Valor padrão: 4194304. Intervalo de valores: maior que 0.
NotaConfigure este parâmetro apenas quando
odps.split.policyestiver definido comorow_offset. -
-
Parâmetros CachingMetaParams
Parâmetro
Obrigatório
Descrição
odps.cache.table.enable
Não
Define se deve haver cache de metadados da tabela. Valores válidos:
-
true (padrão): ativa o cache de metadados da tabela. Isso melhora a velocidade de recuperação e atualização de metadados, sendo adequado para cenários com operações DDL frequentes, ambientes multiusuário grandes ou otimização de consultas complexas.
-
false: desativa o cache de metadados da tabela. Como os recursos de cache são limitados e a dependência excessiva pode consumir muita memória, desative o cache para consultas pouco frequentes ou tabelas cujos metadados mudam constantemente.
odps.cache.table.expire
Não
Intervalo de tempo, em segundos (s), após o qual os metadados da tabela em cache são automaticamente removidos. Valor padrão: 86400 (24 horas). Intervalo de valores: maior ou igual a 0.
odps.cache.table.size
Não
Número de entradas de metadados de tabela a serem armazenadas em cache. Valor padrão: 1000.
odps.cache.partition.enable
Não
Define se deve haver cache de metadados para todas as partições da tabela de destino. Valores válidos:
-
true (padrão): ativa o cache de metadados para todas as partições da tabela de destino.
-
false: desativa o cache. Os metadados de todas as partições não são armazenados em cache.
NotaSe a tabela não for particionada, o parâmetro
odps.cache.partition.enablenão terá efeito.odps.cache.partition.expire
Não
Intervalo de tempo, em segundos (s), após o qual os metadados de partição em cache são automaticamente removidos. Valor padrão: 86400 (24 horas). Intervalo de valores: maior ou igual a 0.
odps.cache.partition.size
Não
Número de tabelas particionadas cujos metadados podem ser armazenados em cache. Valor padrão: 1000.
odps.cache.table-name.enable
Não
Define se deve haver cache de todos os nomes de tabela no projeto MaxCompute. Valores válidos:
-
true: ativa o cache de todos os nomes de tabela no projeto MaxCompute.
-
false (padrão): desativa o cache de todos os nomes de tabela no projeto MaxCompute.
odps.cache.table-name.expire
Não
Intervalo de tempo, em segundos (s), após o qual as informações de nomes de tabela em cache no projeto MaxCompute são automaticamente removidas. Valor padrão: 86400 (24 horas). Intervalo de valores: maior ou igual a 0.
-
Exemplo
O exemplo a seguir cria um MaxCompute Catalog chamado odps_catalog, utilizando o projeto MaxCompute mf_mc_bj como referência.
-- Create catalog
CREATE EXTERNAL CATALOG odps_catalog PROPERTIES(
"type"="odps",
"odps.access.id"="<yourAccessKeyId>",
"odps.access.key"="<yourAccessKeySecret>",
"odps.endpoint"="http://service.cn-beijing.maxcompute.aliyun.com/api",
"odps.tunnel.quota"="pay-as-you-go",
"odps.project"="mf_mc_bj"
);
Acessar o MaxCompute
-
Alterne para o Catalog e o projeto MaxCompute de destino. Este exemplo usa
odps_catalogemf_mc_bj.-
Sintaxe
-
Método 1
-- Specify Catalog SET CATALOG <catalog_name>; -- Specify MaxCompute project USE <project_name>; -
Método 2
USE <catalog_name>.<project_name>;
-
-
Exemplo
SET CATALOG odps_catalog; USE mf_mc_bj;
-
Consulte os dados. Este exemplo utiliza a tabela
src.
SELECT * FROM src LIMIT 10;
O resultado é o seguinte.
+------+-------+
| key | value |
+------+-------+
| 1 | 1 |
| 3 | 3 |
| 2 | 2 |
| 4 | 100 |
| 5 | 200 |
| 6 | 300 |
| 3 | 400 |
+------+-------+
Outras operações
Visualize MaxCompute Catalog
-
Liste todos os Catalogs no cluster StarRocks atual.
SHOW CATALOGS;O resultado é o seguinte.
+-----------------+----------+------------------------------------------------------------------+ | Catalog | Type | Comment | +-----------------+----------+------------------------------------------------------------------+ | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. | | odps_catalog | Odps | NULL | +-----------------+----------+------------------------------------------------------------------+ -
Exiba a instrução CREATE de um Catalog específico.
SHOW CREATE CATALOG odps_catalog;O resultado é o seguinte.
+--------------+--------------------------------------------------------------------------+ | Catalog | Create Catalog | +--------------+--------------------------------------------------------------------------+ | odps_catalog | CREATE EXTERNAL CATALOG `odps_catalog` PROPERTIES ("odps.endpoint" = "http://service.cn-beijing.maxcompute.aliyun.com/api", "odps.access.id" = "<yourAccessKeyId>", "odps.access.key" = "<yourAccessKeySecret>", "odps.project" = "odps_project", "type" = "odps" )| +-----------------------------------------------------------------------------------------+
Visualize schema de tabela do MaxCompute
-
Descreva o schema de uma tabela do MaxCompute.
-
Sintaxe
DESC[RIBE] <catalog_name>.<database_name>.<table_name>; -
Descrição dos parâmetros
catalog_name: obrigatório. Nome do Catalog.
database_name: obrigatório. Nome do projeto MaxCompute sob o Catalog de destino.
table_name: obrigatório. Nome da tabela sob o projeto MaxCompute de destino.
-
Exemplo
DESC odps_catalog.mf_mc_bj.src;O resultado é o seguinte.
+-------+------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-------+---------+-------+ | id | INT | Yes | false | NULL | | | a | INT | Yes | false | NULL | | +-------+------+------+-------+---------+-------+
-
-
Exiba o schema da tabela do MaxCompute e sua instrução CREATE TABLE.
-
Sintaxe
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>; -
Descrição dos parâmetros
catalog_name: obrigatório. Nome do Catalog.
database_name: obrigatório. Nome do projeto MaxCompute sob o Catalog de destino.
table_name: obrigatório. Nome da tabela sob o projeto MaxCompute de destino.
-
Exemplo
SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;O resultado é o seguinte.
+-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | src | CREATE TABLE `src` ( `id` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL ) | +-------+--------------------------------------------------------------------------------+ -
Análise do problema
Esse erro ocorre quando o volume de leitura de dados excede a cota do Data Transmission Service. Durante as leituras, o StarRocks divide a tabela em vários shards e os distribui para nós BE, que usam pools de threads para ler dados simultaneamente. O número de slots ocupados durante a leitura é geralmente:
Max(número de shards, número de BEs × concorrência do pool de threads do BE). -
Solução
Adquira um grupo de recursos dedicado do Data Transmission Service com maior concorrência. Para instruções, consulte Purchase and use dedicated Data Transmission Service resource groups.
Ajuste o número de shards configurando os parâmetros
ScanParams. Se você usar a estratégia de shardingrow_offset, aumente também o parâmetroodps.split.row.count.Modifique os parâmetros do pool de threads do BE do StarRocks
scanner_thread_pool_queue_sizeescanner_thread_pool_thread_num. Para detalhes, consulte Introdução ao StarRocks.
Exclua um MaxCompute Catalog
Execute o comando a seguir para excluir um MaxCompute Catalog.
DROP CATALOG odps_catalog;Coleta de estatísticas do Cost-Based Optimizer (CBO)
A versão atual do StarRocks não oferece suporte à coleta automática de estatísticas de tabelas do MaxCompute. Execute o comando a seguir para criar manualmente uma tarefa de coleta de estatísticas.
-- Replace <table_name> with the MaxCompute table name ANALYZE TABLE <table_name>;NotaO CBO do StarRocks realiza estimativas de custo com base em várias estatísticas e seleciona o plano de execução de menor custo entre dezenas de milhares de opções, melhorando a eficiência e o desempenho de consultas complexas. Para mais informações, consulte Coletar estatísticas para o CBO.
Atualize manualmente o cache de metadados
Por padrão, o StarRocks armazena metadados do MaxCompute em cache para melhorar o desempenho das consultas. Após alterar o schema de uma tabela ou atualizar seus dados, atualize manualmente os metadados da tabela para garantir que o StarRocks recupere as informações mais recentes imediatamente.
-- Replace <table_name> with the MaxCompute table name REFRESH EXTERNAL TABLE <table_name>;Perguntas frequentes
Erro ao ler dados: Your slot quota is exceeded.
Apêndice: Mapeamento de tipos
Tipo de campo do MaxCompute
Tipo de campo do StarRocks
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
ImportanteO StarRocks não possui um tipo TIMESTAMP. Ao ler dados TIMESTAMP, eles são tratados como DATETIME, o que resulta em perda de precisão.
ARRAY
ARRAY
MAP
MAP
STRUCT
STRUCT
-