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 | | 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.