Todos los productos
Search
Centro de documentos

E-MapReduce:Uso de JDBC para conectarse a Trino

Última actualización: Sep 04, 2026

Conéctese a una base de datos Trino en un clúster de E-MapReduce (EMR) mediante el controlador JDBC de Trino para ejecutar consultas complejas, analizar datos o integrar resultados en aplicaciones Java.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un clúster de EMR con el servicio Trino instalado

  • Acceso de red al clúster de EMR desde la computadora que ejecuta su aplicación Java (misma VPC)

  • Maven (si utiliza Maven para gestionar dependencias)

Adición de la dependencia del controlador JDBC

Agregue la dependencia correcta del controlador JDBC al archivo pom.xml según la versión de su clúster de EMR.

Versión de EMR

Versión del componente

Dependencia de Maven

Clase del controlador

Serie EMR 3.X: V3.38.0 y posteriores

Serie EMR 5.X: V5.5.0 y posteriores

3XX

groupId: io.trino

artifactId: trino-jdbc

io.trino.jdbc.TrinoDriver

Serie EMR 3.X: V3.25.0–V3.37.X

Serie EMR 4.X: V4.3.0–V4.9.0

Serie EMR 5.X: V5.2.1–V5.4.3

3XX

groupId: io.prestosql

artifactId: presto-jdbc

io.prestosql.jdbc.PrestoDriver

Otras versiones de EMR

0.2XX

groupId: com.facebook.presto

artifactId: presto-jdbc

com.facebook.presto.jdbc.PrestoDriver

Ejemplo: EMR V3.38.0 y posteriores, o V5.5.0 y posteriores

<dependency>
    <groupId>io.trino</groupId>
    <artifactId>trino-jdbc</artifactId>
    <version>3XX</version>
</dependency>

Ejemplo: EMR V3.25.0–V3.37.X, V4.3.0–V4.9.0 o V5.2.1–V5.4.3

<dependency>
    <groupId>io.prestosql</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>3XX</version>
</dependency>

Ejemplo: Otras versiones de EMR

<dependency>
    <groupId>com.facebook.presto</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>0.2XX</version>
</dependency>

Conexión a una base de datos

El formato de la URL JDBC depende de la versión de su clúster de EMR.

EMR V3.38.0 y posteriores, o V5.5.0 y posteriores: utilice el esquema jdbc:trino:

jdbc:trino://<COORDINATOR>:<PORT>/[CATALOG]/[SCHEMA]

Otras versiones de EMR: utilice el esquema jdbc:presto:

jdbc:presto://<COORDINATOR>:<PORT>/[CATALOG]/[SCHEMA]

Parámetro

Descripción

<COORDINATOR>

Nombre o dirección IP del nodo maestro

<PORT>

Número de puerto de Trino

[CATALOG]

(Opcional) Nombre del catálogo

[SCHEMA]

(Opcional) Nombre del esquema

Nombres de nodos maestros:

  • Clúster DataLake: master-1-1

  • Clúster Hadoop: emr-header-1

Ejemplos de URL (para EMR V3.38.0+ o V5.5.0+):

jdbc:trino://master-1-1:9090               // default catalog and schema
jdbc:trino://master-1-1:9090/hive          // catalog=hive, default schema
jdbc:trino://master-1-1:9090/hive/default  // catalog=hive, schema=default

Ejemplos de URL (para otras versiones de EMR):

jdbc:presto://master-1-1:9090               // default catalog and schema
jdbc:presto://master-1-1:9090/hive          // catalog=hive, default schema
jdbc:presto://master-1-1:9090/hive/default  // catalog=hive, schema=default
Reemplace master-1-1 por el nombre real del nodo maestro en su clúster. Para un clúster DataLake, el nombre del nodo maestro es master-1-1 . Para un clúster Hadoop, el nombre del nodo maestro es emr-header-1 .

Paso de parámetros de conexión

Pase los parámetros a DriverManager mediante un objeto Properties o parámetros de consulta en la 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);
Para las versiones de EMR que utilizan el esquema jdbc:presto , reemplace jdbc:trino por jdbc:presto en los ejemplos anteriores.

Parámetros de conexión

Parámetro

Tipo

Descripción

user

STRING

Nombre de usuario para autenticación y autorización

password

STRING

Contraseña para la autenticación mediante Lightweight Directory Access Protocol (LDAP)

socksProxy

STRING:NUMBER

Dirección y puerto del proxy SOCKS. Ejemplo: localhost:1080

httpProxy

STRING:NUMBER

Dirección y puerto del proxy HTTP. Ejemplo: localhost:8888

SSL

BOOLEAN

Indica si se debe habilitar SSL para conexiones HTTPS. Valor predeterminado: false

SSLTrustStorePath

STRING

Ruta al archivo de almacén de confianza de Java

SSLTrustStorePassword

STRING

Contraseña para acceder al archivo de almacén de confianza de Java

KerberosRemoteServiceName

STRING

Nombre del servicio Kerberos

KerberosPrincipal

STRING

Nombre de la entidad de seguridad de Kerberos

KerberosUseCanonicalHostname

BOOLEAN

Indica si se debe usar un nombre de host canónico. Valor predeterminado: false

KerberosConfigPath

STRING

Ruta al archivo de configuración de Kerberos

KerberosKeytabPath

STRING

Ruta al archivo keytab de Kerberos

KerberosCredentialCachePath

STRING

Ruta a la caché de credenciales de Kerberos

Ejemplo

El siguiente código se conecta a Trino, ejecuta una consulta e imprime los 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
        }
    }
}

Preguntas frecuentes

Al conectarme mediante JDBC, obtengo el error Authentication failed: Basic authentication or X-Trino-User must be sent. ¿Qué debo hacer?

Este error ocurre cuando la versión del controlador JDBC no coincide con la versión de Trino que se ejecuta en su clúster. Utilice el controlador que corresponda a la versión de su clúster de EMR; consulte la tabla de dependencias para seleccionar el groupId, el artifactId y la versión correctos.

Pasos siguientes

Para consultas sencillas y ad hoc, conéctese a Trino mediante la CLI. Consulte Use the CLI to connect to Trino.