全部产品
Search
文档中心

E-MapReduce:Gunakan JDBC untuk mengakses Presto

更新时间:Jun 24, 2025

Setelah membuat kluster E-MapReduce (EMR) yang mencakup layanan Presto, Anda dapat menggunakan driver JDBC yang disediakan oleh Presto untuk terhubung ke database Presto. Dengan koneksi ini, Anda dapat menjalankan query data kompleks, melakukan analisis dan pemrosesan data dalam database, serta mengintegrasikan hasil query ke dalam aplikasi Java.

Tambahkan dependensi driver JDBC ke file pom.xml di Maven

Tambahkan dependensi driver JDBC Presto yang diperlukan ke file pom.xml sesuai dengan versi kluster EMR Anda.

Versi Komponen

JDBC driver

Nama kelas driver

0.2XX

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

com.facebook.presto.jdbc.PrestoDriver

Versi Java harus Java 8 atau yang lebih baru. Selain itu, semua pengguna harus memiliki izin query pada tabel system.jdbc.

Terhubung ke database

Gunakan URL JDBC dalam format berikut untuk terhubung ke database:

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

Contoh URL JDBC:

jdbc:presto://master-1-1:8889               # Terhubung ke database menggunakan katalog default dan skema default.
jdbc:presto://master-1-1:8889/hive          # Terhubung ke database menggunakan katalog bernama hive dan skema default.
jdbc:presto://master-1-1:8889/hive/default  # Terhubung ke database menggunakan katalog bernama hive dan skema bernama default.

Parameter koneksi JDBC

Driver JDBC mendukung berbagai parameter. Anda dapat menggunakan salah satu metode berikut untuk meneruskan parameter ke DriverManager:

  • Teruskan parameter ke DriverManager sebagai properti.

    String url = "jdbc:presto://<Nama node master>:8889/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "presto");
    Connection connection = DriverManager.getConnection(url, properties);
    // ...... Lakukan operasi pada database Anda.
  • Teruskan parameter sebagai bagian dari URL.

    String url = "jdbc:presto://<Nama node master>:8889/hive/default?user=presto";
    Connection connection = DriverManager.getConnection(url);
    // ...... Lakukan operasi pada database Anda.

Tabel berikut menjelaskan parameter umum yang tersedia.

Parameter

Tipe Data

Deskripsi

user

STRING

Nama pengguna yang digunakan untuk otentikasi identitas dan otorisasi.

password

STRING

Kata sandi yang digunakan untuk otentikasi Lightweight Directory Access Protocol (LDAP).

socksProxy

STRING:NUMBER

Alamat dan port server proxy SOCKS. Contoh: localhost:1080.

httpProxy

STRING:NUMBER

Alamat dan port server proxy HTTP. Contoh: localhost:8888.

SSL

BOOLEAN

Menentukan apakah akan mengaktifkan SSL untuk aplikasi Java agar terhubung ke database berbasis HTTPS. Nilai default: false.

SSLKeyStorePath

STRING

Path yang digunakan untuk menyimpan file keystore.

SSLKeyStorePassword

STRING

Kata sandi yang digunakan untuk mengakses file keystore.

SSLTrustStorePath

STRING

Path yang digunakan untuk menyimpan file Java truststore.

SSLTrustStorePassword

STRING

Kata sandi yang digunakan untuk mengakses file Java truststore.

KerberosRemoteServiceName

STRING

Nama layanan Kerberos.

KerberosPrincipal

STRING

Nama principal Kerberos.

KerberosUseCanonicalHostname

BOOLEAN

Menentukan apakah akan menggunakan nama host kanonik. Nilai default: false.

KerberosConfigPath

STRING

Path yang digunakan untuk menyimpan file konfigurasi Kerberos.

KerberosKeytabPath

STRING

Path yang digunakan untuk menyimpan file Kerberos keytab.

KerberosCredentialCachePath

STRING

Path yang digunakan untuk menyimpan cache kredensial Kerberos.

Contoh

Kode berikut menunjukkan cara menggunakan driver JDBC untuk terhubung ke database:

Connection connection = null;
Statement statement = null;
try {
    // URL JDBC dari komponen.
    String url = "jdbc:presto://<Nama node master>:8889/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "presto");
    // Buat objek koneksi.
    connection = DriverManager.getConnection(url, properties);
    // Buat objek pernyataan.
    statement = connection.createStatement();
    // Eksekusi pernyataan query.
    ResultSet rs = statement.executeQuery("select * from t1");
    // Kembalikan hasil.
    int columnNum = rs.getMetaData().getColumnCount();
    int rowIndex = 0;
    while (rs.next()) {
        rowIndex++;
        for(int i = 1; i <= columnNum; i++) {
            System.out.println("Baris " + rowIndex + ", Kolom " + i + ": " + rs.getInt(i));
        }
    }
} catch(SQLException e) {
    LOG.ERROR("Penyimpangan dilempar.", e);
} finally {
  // Hancurkan objek pernyataan.
  if (statement != null) {
      try {
        statement.close();
    } catch(Throwable t) {
        // Tidak ada operasi
    }
  }
  // Tutup koneksi.
  if (connection != null) {
      try {
        connection.close();
    } catch(Throwable t) {
        // Tidak ada operasi
    }
  }
}

Referensi

Untuk query sederhana, kami sarankan Anda terhubung ke Presto menggunakan CLI. Untuk informasi lebih lanjut, lihat Gunakan CLI untuk terhubung ke Presto.