O conector MySQL permite consultar e criar tabelas em uma instância externa do MySQL, além de executar operações JOIN entre sistemas diferentes (como MySQL e Hive) ou entre duas instâncias do MySQL.
Contexto
Este tópico aborda os seguintes assuntos sobre o conector MySQL:
Pré-requisitos
Você deve ter um cluster DataLake, um cluster Hadoop com o service Trino ou um cluster Trino independente. Para mais detalhes, consulte Crie um cluster.
É necessário possuir uma instância do ApsaraDB RDS for MySQL. Para mais informações, veja Quickly create an ApsaraDB RDS for MySQL instance.
Limitações
O suporte ao conector MySQL está disponível em clusters Hadoop e Trino que executam o EMR V3.38.0 ou versões posteriores.
Requer o MySQL 5.7, 8,0 ou superior.
O coordenador do Trino e todos os nós workers precisam de acesso de rede à instância do MySQL. A porta padrão é a 3306.
-
As instruções SQL a seguir não são suportadas:
DELETE
GRANT
REVOKE
SHOW GRANTS
SHOW ROLES
SHOW ROLE GRANTS
Configurar o conector MySQL
Para modificar as configurações do conector MySQL, consulte Configure a connector.
Configuração padrão do conector
Na página Configure do service Trino no console EMR, dentro da seção Service Configuration, clique na aba mysql.properties e configure os parâmetros abaixo.
|
Parâmetro |
Descrição |
|
connection-url |
String de conexão JDBC para o banco de dados. Para mais detalhes, consulte Visualize e gerencie endpoints e portas da instância. Exemplo: jdbc:mysql://rm-2ze5ipacsu8265q****.mysql.rds.aliyuncs.com:3306. |
|
connection-user |
Nome de usuário do banco de dados. Esse usuário precisa ter permissão para acessar as tabelas no banco de dados do ApsaraDB RDS for MySQL. |
|
connection-password |
Senha correspondente ao connection-user. |
Configurar múltiplos services MySQL
Caso utilize vários services MySQL, crie um arquivo de configuração exclusivo para cada service no diretório etc/catalog. Todo arquivo deve ter a extensão .properties. Por exemplo, um arquivo chamado sales.properties cria um catálogo denominado sales no Trino.
Exemplo de configuração
Para configurar múltiplos services MySQL em um cluster EMR, adicione itens de configuração personalizados usando connector[x].properties, onde x representa 1, 2, 3, e assim por diante. Siga os passos abaixo:
-
Acesse a página de configuração do service Trino no console EMR. Na seção Service Configuration, dentro da aba mysql.properties, modifique os parâmetros connection-user, connection-password e connection-url.
Clique em Add Configuration Item na parte superior para incluir os itens necessários. Para mais detalhes, consulte Add configuration items.
-
Salve a configuração.
Na seção Service Configuration, clique em Save.
Na caixa de diálogo exibida, insira um Execution Reason e clique em Save.
-
Reinicie o service.
No canto superior direito, selecione .
Na caixa de diálogo que aparece, insira um Execution Reason e clique em OK.
Na caixa de diálogo Confirm, clique em OK.
Mapeamento de tipos
Tipos DECIMAL
É possível mapear tipos DECIMAL com precisão maior que 38 para o tipo DECIMAL do Trino definindo o item de configuração decimal_mapping ou a propriedade de sessão decimal_mapping como allow_overflow. O intervalo do tipo resultante é controlado pelo item de configuração decimal-default-scale ou decimal-rounding-mode, e sua precisão é fixada em 38.
Por padrão, valores que exigem arredondamento ou truncamento falham durante a execução. Esse comportamento é controlado pelo item de configuração decimal-rounding-mode ou pela propriedade de sessão decimal-rounding-mode. Valores válidos: UNNECESSARY (padrão), UP, DOWN, CEILING, FLOOR, HALF_UP, HALF_DOWN e HALF_EVEN.
Propriedades gerais
As propriedades listadas abaixo controlam o mapeamento de tipos de dados e o cache de metadados no Trino.
|
Parâmetro |
Descrição |
|
unsupported-type-handling |
Define como lidar com tipos de dados de coluna não suportados. Valores válidos:
|
|
jdbc-types-mapped-to-varchar |
Mapeia uma lista de tipos de dados separados por vírgula para VARCHAR ilimitado. |
|
case-insensitive-name-matching |
Especifica se a correspondência de nomes de bancos de dados e schemas remotos deve ignorar maiúsculas e minúsculas. Valores válidos:
|
|
case-insensitive-name-matching.cache-ttl |
Duração do cache para correspondência de nomes remotos sem distinção entre maiúsculas e minúsculas. O valor padrão é 1m. |
|
metadata.cache-ttl |
Tempo de retenção do cache para metadados, incluindo estatísticas de tabelas e colunas. O valor padrão 0 desativa o cache. |
|
metadata.cache-missing |
Indica se os resultados de buscas de metadados malsucedidas devem ser armazenados em cache, incluindo estatísticas de tabelas e colunas. Valores válidos:
|
Exemplo: Consultar o MySQL
-
Visualize o banco de dados RDS.
Conecte-se ao cluster via SSH. Para mais informações, consulte Log on to a cluster.
-
Execute o comando abaixo para conectar-se ao cliente Trino.
-
Cluster DataLake
trino --server master-1-1:9090 --catalog iceberg --schema default -
Cluster Hadoop ou Trino independente
trino --server emr-header-1:9090 --catalog iceberg --schema default
-
-
Execute o seguinte comando para visualizar o schema.
SHOW schemas FROM mysql;Notamysql corresponde ao nome do arquivo de configuração de propriedades.
-
Execute o comando a seguir para visualizar o banco de dados.
SHOW tables FROM mysql.web;NotaNos exemplos deste artigo, web refere-se ao banco de dados criado no MySQL.
-
Consulte os dados da tabela.
-
Consulte dados da tabela mysql.web.clicks.
SELECT * FROM mysql.web.clicks; -
Obtenha as informações das colunas da tabela mysql.web.clicks.
SHOW columns FROM mysql.web.clicks;Como alternativa, execute o comando abaixo para descrever a tabela.
DESCRIBE mysql.web.clicks;
-
Pushdown
Para obter detalhes sobre pushdown, consulte Pushdown na documentação do Trino.
O conector MySQL aplica pushdown nos seguintes operadores e funções:
-
Operadores
Join
Limit
Top-N
-
Funções
avg()
count()
max()
min()
sum()
stddev()
stddev_pop()
stddev_samp()
variance()
var_pop()
var_samp()