Tous les produits
Search
Centre de documentation

E-MapReduce:Utiliser JDBC pour accéder à Presto

Dernière mise à jour :Aug 09, 2026

Connectez-vous à une base de données Presto dans un cluster E-MapReduce (EMR) avec le pilote JDBC Presto pour exécuter des requêtes complexes, analyser des données et intégrer les résultats à des applications Java.

Prérequis

Avant de commencer, vérifiez que vous disposez des éléments suivants :

  • Un cluster EMR avec le service Presto en cours d'exécution

  • Java 8 ou version ultérieure

  • Les autorisations de requête sur la table system.jdbc pour tous les utilisateurs qui se connecteront

Ajouter la dépendance du pilote JDBC

Ajoutez le pilote JDBC Presto à votre fichier pom.xml selon la version de votre cluster EMR.

Version du composant Dépendance Nom de la classe du pilote
0,2XX groupId : com.facebook.prestoartifactId : presto-jdbcversion : 0.2XX com.facebook.presto.jdbc.PrestoDriver
<dependency>
  <groupId>com.facebook.presto</groupId>
  <artifactId>presto-jdbc</artifactId>
  <version>0.2XX</version>
</dependency>

Se connecter à une base de données

Utilisez le format d'URL suivant pour la connexion :

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

Le port par défaut est 8889. Exemples :

jdbc:presto://master-1-1:8889               // Default catalog and schema
jdbc:presto://master-1-1:8889/hive          // Catalog: hive, default schema
jdbc:presto://master-1-1:8889/hive/default  // Catalog: hive, schema: default

Transmettre les paramètres de connexion

Transmettez les paramètres au DriverManager via l'une des méthodes suivantes. Elles sont équivalentes.

**Sous forme d'objet Properties :**

String url = "jdbc:presto://<master-node-name>:8889/hive/default";
Properties properties = new Properties();
properties.setProperty("user", "presto");
Connection connection = DriverManager.getConnection(url, properties);

Sous forme de paramètres d'URL :

String url = "jdbc:presto://<master-node-name>:8889/hive/default?user=presto";
Connection connection = DriverManager.getConnection(url);

Paramètres de connexion

Paramètre Type Valeur par défaut Description
user STRING Nom d'utilisateur pour l'authentification et l'autorisation
password STRING Mot de passe pour l'authentification LDAP (Lightweight Directory Access Protocol)
socksProxy STRING:NUMBER Adresse et port du proxy SOCKS. Exemple : localhost:1080
httpProxy STRING:NUMBER Adresse et port du proxy HTTP. Exemple : localhost:8888
SSL BOOLEAN false Active SSL pour les connexions HTTPS
SSLKeyStorePath STRING Chemin d'accès au fichier keystore
SSLKeyStorePassword STRING Mot de passe du fichier keystore
SSLTrustStorePath STRING Chemin d'accès au fichier truststore Java
SSLTrustStorePassword STRING Mot de passe du fichier truststore Java
KerberosRemoteServiceName STRING Nom du service Kerberos
KerberosPrincipal STRING Nom principal Kerberos
KerberosUseCanonicalHostname BOOLEAN false Utilise le nom d'hôte canonique pour Kerberos
KerberosConfigPath STRING Chemin d'accès au fichier de configuration Kerberos
KerberosKeytabPath STRING Chemin d'accès au fichier keytab Kerberos
KerberosCredentialCachePath STRING Chemin d'accès au cache d'identifiants Kerberos

Exemple

L'exemple suivant se connecte à une base de données Presto, exécute une requête et affiche les résultats :

Connection connection = null;
Statement statement = null;
try {
    // JDBC URL pointing to the Presto coordinator
    String url = "jdbc:presto://<master-node-name>:8889/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "presto");
    // Create a connection
    connection = DriverManager.getConnection(url, properties);
    // Create a statement
    statement = connection.createStatement();
    // Execute a query
    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 {
    // Close the statement
    if (statement != null) {
        try {
            statement.close();
        } catch (Throwable t) {
            // No-ops
        }
    }
    // Close the connection
    if (connection != null) {
        try {
            connection.close();
        } catch (Throwable t) {
            // No-ops
        }
    }
}

Étapes suivantes