Conecte-se a um banco de dados Trino em um cluster E-MapReduce (EMR) com o driver JDBC do Trino para executar consultas complexas, analisar dados ou integrar resultados a aplicações Java.
Limites de uso
Para acessar o cluster EMR, verifique se a sua rede e o cluster EMR estão na mesma VPC.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster EMR com o serviço Trino instalado
Acesso de rede ao cluster EMR a partir da máquina que executa a aplicação Java (mesma VPC)
Maven (se usar o Maven para gerenciar dependências)
Adicione a dependência do driver JDBC
Adicione a dependência correta do driver JDBC ao arquivo pom.xml conforme a versão do seu cluster EMR.
|
Versão do EMR |
Versão do componente |
Dependência Maven |
Classe do driver |
|
Série EMR 3.X: V3.38.0 e posterior Série EMR 5.X: V5.5.0 e posterior |
3XX |
|
|
|
Série EMR 3.X: V3.25.0–V3.37.X Série EMR 4.X: V4.3.0–V4.9.0 Série EMR 5.X: V5.2.1–V5.4.3 |
3XX |
|
|
|
Outras versões do EMR |
0,2XX |
|
|
Exemplo: EMR V3.38.0 e posterior ou V5.5.0 e posterior
<dependency>
<groupId>io.trino</groupId>
<artifactId>trino-jdbc</artifactId>
<version>3XX</version>
</dependency>
Exemplo: EMR V3.25.0–V3.37.X, V4.3.0–V4.9.0 ou V5.2.1–V5.4.3
<dependency>
<groupId>io.prestosql</groupId>
<artifactId>presto-jdbc</artifactId>
<version>3XX</version>
</dependency>
Exemplo: Outras versões do EMR
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-jdbc</artifactId>
<version>0.2XX</version>
</dependency>
Passe parâmetros de conexão
Passe parâmetros para o DriverManager usando um objeto Properties ou parâmetros de consulta na URL.
// Method 1: Properties object
String url = "jdbc:trino://master-1-1:9090/hive/default";
Properties properties = new Properties();
properties.setProperty("user", "hadoop");
properties.setProperty("SSL", "true");
Connection connection = DriverManager.getConnection(url, properties);
// Method 2: URL parameters
String url = "jdbc:trino://master-1-1:9090/hive/default?user=hadoop&SSL=true";
Connection connection = DriverManager.getConnection(url);
Nas versões do EMR que usam o esquemajdbc:presto, substituajdbc:trinoporjdbc:prestonos exemplos acima.
Parâmetros de conexão
|
Parâmetro |
Tipo |
Descrição |
|
|
STRING |
Nome de usuário para autenticação e autorização |
|
|
STRING |
Senha para autenticação via Lightweight Directory Access Protocol (LDAP) |
|
|
STRING:NUMBER |
Endereço e porta do proxy SOCKS. Exemplo: |
|
|
STRING:NUMBER |
Endereço e porta do proxy HTTP. Exemplo: |
|
|
BOOLEAN |
Ativa ou desativa o SSL para conexões HTTPS. Padrão: |
|
|
STRING |
Caminho para o arquivo truststore do Java |
|
|
STRING |
Senha para acessar o arquivo truststore do Java |
|
|
STRING |
Nome do serviço Kerberos |
|
|
STRING |
Nome do principal Kerberos |
|
|
BOOLEAN |
Usa ou não um nome de host canônico. Padrão: |
|
|
STRING |
Caminho para o arquivo de configuração do Kerberos |
|
|
STRING |
Caminho para o arquivo keytab do Kerberos |
|
|
STRING |
Caminho para o cache de credenciais do Kerberos |
Exemplo
O código a seguir conecta-se ao Trino, executa uma consulta e imprime os resultados:
Connection connection = null;
Statement statement = null;
try {
// JDBC URL — use jdbc:trino for EMR V3.38.0+/V5.5.0+, or jdbc:presto for other versions
String url = "jdbc:trino://master-1-1:9090/hive/default";
Properties properties = new Properties();
properties.setProperty("user", "hadoop");
// Create a connection
connection = DriverManager.getConnection(url, properties);
// Create a statement and run a query
statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select * from t1");
// Print results
int columnNum = rs.getMetaData().getColumnCount();
int rowIndex = 0;
while (rs.next()) {
rowIndex++;
for (int i = 1; i <= columnNum; i++) {
System.out.println("Row " + rowIndex + ", Column " + i + ": " + rs.getInt(i));
}
}
} catch (SQLException e) {
LOG.ERROR("Exception thrown.", e);
} finally {
// Release resources
if (statement != null) {
try {
statement.close();
} catch (Throwable t) {
// No-ops
}
}
if (connection != null) {
try {
connection.close();
} catch (Throwable t) {
// No-ops
}
}
}
Perguntas frequentes
Ao me conectar via JDBC, recebo o erro Authentication failed: Basic authentication or X-Trino-User must be sent. O que devo fazer?
Esse erro ocorre quando a versão do driver JDBC não corresponde à versão do Trino em execução no cluster. Use o driver compatível com a versão do seu cluster EMR. Consulte a tabela de dependências para selecionar o groupId, o artifactId e a versão corretos.
Próximos passos
Para consultas simples e ad hoc, conecte-se ao Trino pela CLI. Consulte Usar a CLI para se conectar ao Trino.