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 |
| 3XX | | io.trino.jdbc.TrinoDriver |
| 3XX | | io.prestosql.jdbc.PrestoDriver |
Versi EMR lainnya | 0.2XX | | 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.nullGanti
<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
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.