全部产品
Search
文档中心

E-MapReduce:Gunakan JDBC untuk terhubung ke Trino

更新时间:Jun 24, 2025

Setelah membuat kluster E-MapReduce (EMR) yang mencakup layanan Trino, Anda dapat menggunakan driver JDBC yang disediakan oleh Trino untuk terhubung ke database Trino. Setelah terhubung, Anda dapat menjalankan operasi kueri, analisis, dan pemrosesan data kompleks pada database tersebut atau mengintegrasikan hasil kueri ke dalam aplikasi Java.

Tambahkan dependensi driver JDBC ke file pom.xml di Maven

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

Versi EMR

Versi Komponen

Driver JDBC

Nama Kelas Driver

  • Seri EMR 3.X: EMR V3.38.0 dan yang lebih baru

  • Seri EMR 5.X: EMR V5.5.0 dan yang lebih baru

3XX

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

io.trino.jdbc.TrinoDriver

  • Seri EMR 3.X: EMR V3.25.0 hingga EMR V3.37.X

  • Seri EMR 4.X: EMR V4.3.0 hingga EMR V4.9.0

  • Seri EMR 5.X: EMR V5.2.1 hingga EMR V5.4.3

3XX

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

io.prestosql.jdbc.PrestoDriver

Versi EMR lainnya

0.2XX

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

com.facebook.presto.jdbc.PrestoDriver

Terhubung ke Database

  • Jika kluster EMR Anda adalah versi V3.38.0 atau lebih baru, atau versi V5.5.0 atau lebih baru, gunakan URL JDBC dalam format berikut untuk terhubung ke database:

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

    Deskripsi parameter:

    • <COORDINATOR>: Nama atau alamat IP dari Node master di kluster Anda.

    • <PORT>: Nomor port Trino.

    • [CATALOG]: Nama katalog dari database Trino yang ingin diakses. Parameter ini opsional.

    • [SCHEMA]: Nama skema dari database Trino yang ingin diakses. Parameter ini opsional.

    Contoh URL JDBC:

    jdbc:trino://<Nama Node master>:9090               # Terhubung ke database menggunakan katalog default dan skema default.
    jdbc:trino://<Nama Node master>:9090/hive          # Terhubung ke database menggunakan katalog bernama hive dan skema default.
    jdbc:trino://<Nama Node master>:9090/hive/default  # Terhubung ke database menggunakan katalog bernama hive dan skema bernama default.
    null

    Ganti <Nama Node master> dalam URL JDBC dengan nama sebenarnya dari Node master di kluster Anda.

    • Untuk kluster DataLake, nama Node master adalah master-1-1.

    • Untuk kluster Hadoop, nama Node master adalah emr-header-1.

  • Untuk kluster EMR lainnya, gunakan URL JDBC dalam format berikut untuk terhubung ke database:

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

    Contoh URL JDBC:

    jdbc:presto://<Nama Node master>:9090               # Terhubung ke database menggunakan katalog default dan skema default.
    jdbc:presto://<Nama Node master>:9090/hive          # Terhubung ke database menggunakan katalog bernama hive dan skema default.
    jdbc:presto://<Nama Node master>:9090/hive/default  # Terhubung ke database menggunakan katalog bernama hive dan skema bernama default.

Parameter Koneksi JDBC

Driver JDBC mendukung berbagai parameter. Gunakan salah satu metode berikut untuk meneruskan parameter ke DriverManager:

  • Teruskan parameter sebagai properti ke DriverManager.

    • Kluster EMR versi V3.38.0 atau lebih baru, atau versi V5.5.0 atau lebih baru:

      String url = "jdbc:trino://<Nama Node master>:9090/hive/default";
      Properties properties = new Properties();
      properties.setProperty("user", "hadoop");
      Connection connection = DriverManager.getConnection(url, properties);
      // ...... Lakukan operasi pada database Anda.
    • Kluster EMR versi lain:

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

    • Kluster EMR versi V3.38.0 atau lebih baru, atau versi V5.5.0 atau lebih baru:

      String url = "jdbc:trino://<Nama Node master>:9090/hive/default?user=hadoop";
      Connection connection = DriverManager.getConnection(url);
      // ...... Lakukan operasi pada database Anda.
    • Kluster EMR versi lain:

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

Tabel berikut menjelaskan parameter umum:

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 untuk terhubung ke database berbasis HTTPS. Nilai default: false.

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 hostname kanonikal. Nilai default: false.

KerberosConfigPath

STRING

Path yang digunakan untuk menyimpan file konfigurasi Kerberos.

KerberosKeytabPath

STRING

Path yang digunakan untuk menyimpan file keytab Kerberos.

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:<trino/presto>://<Nama Node master>:9090/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "hadoop");
    // Buat objek koneksi.
    connection = DriverManager.getConnection(url, properties);
    // Buat objek pernyataan.
    statement = connection.createStatement();
    // Eksekusi pernyataan kueri.
    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("Pengecualian dilemparkan.", 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
    }
  }
}

FAQ

Ketika saya terhubung ke database menggunakan driver JDBC, pesan kesalahan Autentikasi gagal: Otentikasi Dasar atau X-Trino-User harus dikirim ditampilkan. Apa yang harus dilakukan?

Kesalahan ini sering terjadi karena versi driver JDBC tidak sesuai dengan versi Trino. Untuk memperbaiki masalah, gunakan driver JDBC yang kompatibel dengan versi Trino yang Anda hubungkan.

Referensi

Jika Anda hanya ingin menjalankan kueri sederhana, kami sarankan untuk terhubung ke Trino menggunakan CLI. Untuk informasi lebih lanjut, lihat Gunakan CLI untuk Terhubung ke Trino.