O driver JDBC do MaxCompute fornece uma interface padrão Java Database Connectivity (JDBC) para executar consultas SQL distribuídas em grandes conjuntos de dados e conectar ferramentas compatíveis com JDBC ao MaxCompute.
Casos de uso
Ferramentas de análise de BI: conecte Tableau, Yonghong BI e ferramentas semelhantes para visualizar e analisar dados do MaxCompute.
Ferramentas de gerenciamento de banco de dados: utilize DBeaver, DataGrip e SQL Workbench/J para gerenciar projetos do MaxCompute.
Aplicações Java personalizadas: use a API JDBC no código Java para executar instruções SQL e processar resultados de consultas.
Pré-requisitos
Verifique se você tem:
Associação a um projeto do MaxCompute
Permissão CREATE INSTANCE no projeto
Permissões SELECT e DOWNLOAD nas tabelas que deseja consultar
Requisitos específicos por versão:
|
Versão do JDBC |
Requisito adicional |
|
V1.9 e anteriores |
Permissão CREATE TABLE (o sistema cria uma tabela temporária por consulta; use comandos Tunnel para recuperar os resultados) |
|
V2.2 e posteriores |
Permissão CREATE TABLE não necessária (usa a interface InstanceTunnel; o sistema não cria tabela temporária) |
Para obter mais informações sobre as permissões do MaxCompute, consulte Permissões do MaxCompute.
Limites e restrições
Proteção de dados
Se a proteção de dados estiver ativada em um projeto, os dados não poderão sair dele.
JDBC anterior à V2.4: não é possível recuperar conjuntos de resultados.
JDBC V2.4 e posterior: o parâmetro
READ_TABLE_MAX_ROWlimita as linhas de resultado. Para mais detalhes, consulte Operações de projeto.
Para saber mais sobre proteção de dados, consulte Proteção de dados do projeto.
Tipos de dados estendidos
O MaxCompute V2.0 suporta tipos de dados adicionais, como TINYINT, SMALLINT, DATETIME, TIMESTAMP, ARRAY, MAP e STRUCT. Execute o comando a seguir para ativá-los. Para mais informações, consulte Edições de tipos de dados.
set odps.sql.type.system.odps2=true
Controle de concorrência para instruções SQL longas
No JDBC V3.4.1 e versões posteriores, limite a concorrência ao executar instruções SQL maiores que 1 KB. Por exemplo, em uma instância ECS com 8 vCPUs e 16,0 GiB de memória, mantenha a concorrência em até 100.
Se não for possível controlar a concorrência adequadamente, atualize para o JDBC V3.8.8 ou V3.9.3 e defina skipCheckIfSelect=true para desativar a análise de SQL. Para mais detalhes, consulte Atualizações de versão.
Pools de conexões e transações
O MaxCompute usa serviços REST em vez de conexões persistentes, o que torna o estabelecimento de conexão leve. Pools de conexões são suportados, mas não obrigatórios.
O MaxCompute não suporta transações. Cada consulta é executada imediatamente, e o modo de confirmação automática permanece sempre ativado, sem possibilidade de desativação.
Perguntas frequentes
Onde fica o arquivo de log do driver JDBC?
Por padrão, o arquivo de log fica no mesmo diretório do arquivo JAR do driver JDBC e se chama jdbc.log. Se o driver estiver empacotado em um uber JAR, o arquivo de log aparecerá no mesmo diretório desse uber JAR.
O log registra detalhes das chamadas da API JDBC, como nomes de classes, métodos, parâmetros, valores de retorno e contagem de linhas, informações essenciais para depuração.
Como obtenho uma URL do Logview?
O driver JDBC baseia-se no MaxCompute SDK for Java e gera automaticamente URLs do Logview durante a execução de instruções SQL, assim como o cliente MaxCompute, o MaxCompute Studio e o DataWorks. Configure o parâmetro properties.log4j para capturar essas URLs. Por padrão, elas são gravadas na saída de erro padrão.
Use as URLs do Logview para verificar o status dos jobs, acompanhar o progresso e recuperar os resultados da execução.
Como recupero campos de partição e tipos de dados de colunas?
Chame Connection.getMetadata() para obter um objeto DatabaseMetaData e chame getColumns() para recuperar os metadados de todas as colunas.