O conector MySQL permite que o Trino consulte e grave dados em um banco de dados MySQL externo. Utilize-o para executar consultas federadas que unem tabelas do MySQL a outras fontes de dados no seu cluster, como tabelas Hive ou Iceberg, ou para unir dados entre duas instâncias do MySQL.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster Hadoop ou DataLake com o serviço Trino implantado, ou um cluster Trino. Consulte Crie um cluster.
Uma instância do ApsaraDB RDS for MySQL. Consulte Crie uma instância do ApsaraDB RDS for MySQL.
Limitações
Apenas clusters Hadoop ou Trino no E-MapReduce (EMR) V3.38.0 e versões posteriores oferecem suporte ao conector MySQL.
Versões compatíveis do MySQL: 5,7, 8,0 ou posterior (somente ApsaraDB RDS for MySQL).
O nó coordenador e todos os nós trabalhadores devem conseguir acessar o MySQL. A porta padrão é 3306.
As seguintes instruções SQL não são suportadas:
DELETE,GRANT,REVOKE,SHOW GRANTS,SHOW ROLES,SHOW ROLE GRANTS.
Configure o conector MySQL
Para etapas gerais de configuração de conectores, consulte Configure um conector.
Configuração mínima necessária
Cada catálogo MySQL é definido por um arquivo .properties. A configuração mínima exige três propriedades:
connection-url=jdbc:mysql://rm-2ze5ipacsu8265q****.mysql.rds.aliyuncs.com:3306
connection-user=<your-username>
connection-password=<your-password>
Para encontrar sua connection-url, consulte Visualize e gerencie endpoints e portas da instância.
No console EMR, essas propriedades correspondem aos itens de configuração na aba mysql.properties, dentro da aba Configure do serviço Trino.
|
Item de configuração |
Descrição |
|
|
A URL JDBC da sua instância do ApsaraDB RDS for MySQL. |
|
|
O nome de usuário para acesso ao banco de dados. A conta deve ter permissões de leitura (e escrita, se necessário) nas tabelas de destino. |
|
|
A senha da conta especificada em |
Conectar-se a várias instâncias do MySQL
Para conectar o Trino a mais de uma instância do MySQL, crie um arquivo .properties separado para cada instância no diretório etc/catalog. Cada nome de arquivo torna-se o nome do catálogo no Trino — por exemplo, sales.properties cria um catálogo chamado sales.
Os nomes dos arquivos devem ser únicos e terminar com .properties.
Para adicionar um segundo catálogo MySQL usando o console EMR:
Na aba Configure do serviço Trino, clique em na aba mysql.properties. Defina
connection-url,connection-usereconnection-passwordpara sua primeira instância do MySQL. Para adicionar propriedades não listadas por padrão, clique em Add Configuration Item na parte superior da aba. Para obter detalhes, consulte a seção Adicionar itens de configuração em "Gerencie itens de configuração".Clique em na aba connector[x].properties (onde
xé um número inteiro começando em 1) para configurar catálogos MySQL adicionais. Repita o processo para cada instância adicional.-
Salve a configuração:
Na parte inferior da aba Configure, clique em Save.
Na caixa de diálogo, insira um motivo em Execution Reason e clique em Save.
-
Reinicie o serviço Trino:
No canto superior direito, escolha More > Restart.
Insira um motivo em Execution Reason e clique em OK.
Na caixa de diálogo Confirm, clique em OK.
Mapeamentos de tipos de dados
Tipo DECIMAL com precisão maior que 38
O tipo DECIMAL do MySQL suporta precisão de até 65, mas o tipo DECIMAL do Trino aceita uma precisão máxima de 38. Para mapear um DECIMAL(p, s) do MySQL onde p > 38, defina a propriedade de configuração decimal_mapping (ou a propriedade de sessão correspondente) como allow_overflow. O tipo Trino mapeado usa uma precisão fixa de 38; a escala é controlada por decimal-default-scale e o comportamento de arredondamento por decimal-rounding-mode.
Por padrão, qualquer valor que exija arredondamento ou truncamento durante o mapeamento causa uma falha em tempo de execução. Defina decimal-rounding-mode com um dos valores a seguir para alterar esse comportamento:
|
Valor |
Comportamento |
|
|
Falha se o arredondamento for necessário (padrão) |
|
|
Arredonda para longe de zero |
|
|
Arredonda em direção a zero |
|
|
Arredonda em direção ao infinito positivo |
|
|
Arredonda em direção ao infinito negativo |
|
|
Arredonda para o vizinho mais próximo; empates arredondam para cima |
|
|
Arredonda para o vizinho mais próximo; empates arredondam para baixo |
|
|
Arredonda para o vizinho mais próximo; empates arredondam para o par mais próximo |
Propriedades gerais de configuração
Utilize as propriedades abaixo para controlar como tipos de dados não suportados são tratados e como os metadados são armazenados em cache.
|
Propriedade |
Descrição |
Padrão |
|
|
Define o tratamento de colunas com tipos de dados não suportados. |
|
|
|
Força a conversão de tipos JDBC separados por vírgula para |
— |
|
|
Quando definida como |
|
|
|
Tempo de retenção em cache para mapeamentos de nomes sem distinção entre maiúsculas e minúsculas. |
1 minuto |
|
|
Duração do cache de estatísticas de tabelas e colunas. Defina como |
0 (desativado) |
|
|
Se definida como |
|
Consultar dados do MySQL
O conector MySQL mapeia cada banco de dados MySQL para um schema do Trino. Todas as consultas usam o formato de nomenclatura de três níveis catalog.schema.table, onde catalog é o nome do seu arquivo .properties (por exemplo, mysql).
Etapa 1: Faça login no cluster via SSH. Consulte Fazer login em um cluster.
Etapa 2: Conecte-se à CLI do Trino.
Para um cluster DataLake:
trino --server master-1-1:9090 --catalog iceberg --schema default
Para um cluster Hadoop ou Trino:
trino --server emr-header-1:9090 --catalog iceberg --schema default
Etapa 3: Liste todos os bancos de dados MySQL disponíveis no catálogo.
SHOW SCHEMAS FROM mysql;
Etapa 4: Liste as tabelas em um banco de dados específico. Neste exemplo, web é o nome de um banco de dados do ApsaraDB RDS for MySQL.
SHOW TABLES FROM mysql.web;
Etapa 5: Inspecione as colunas de uma tabela.
DESCRIBE mysql.web.clicks;
Alternativamente:
SHOW COLUMNS FROM mysql.web.clicks;
Etapa 6: Consulte a tabela.
SELECT * FROM mysql.web.clicks;
Pushdown
O conector MySQL oferece suporte a pushdown para os seguintes operadores e funções. O pushdown transfere a computação para o lado do MySQL, reduzindo os dados transferidos para o Trino.
O pushdown é aplicado quando melhora o desempenho. Quando enviar uma operação via pushdown representar risco de resultados incorretos, o conector prioriza a exatidão e executa a operação no Trino.
Operadores:
Join
Limit
Top-N
Funções:
avg()count()max()min()sum()stddev()stddev_pop()stddev_samp()variance()var_pop()var_samp()
Para mais detalhes sobre como o pushdown funciona no Trino, consulte Pushdown na documentação do Trino.