HiveQL - Pilih Tempat
Bahasa Kueri Hive (HiveQL) adalah bahasa kueri untuk Hive untuk memproses dan menganalisis data terstruktur di Metastore. Bab ini menjelaskan cara menggunakan pernyataan SELECT dengan klausa WHERE.
Pernyataan SELECT digunakan untuk mengambil data dari tabel. Klausa WHERE berfungsi mirip dengan kondisi. Ini menyaring data menggunakan kondisi dan memberi Anda hasil yang terbatas. Operator dan fungsi bawaan menghasilkan ekspresi, yang memenuhi kondisi tersebut.
Sintaksis
Diberikan di bawah ini adalah sintaks dari query SELECT:
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number];
Contoh
Mari kita ambil contoh klausa SELECT… WHERE. Asumsikan kita memiliki tabel karyawan seperti yang diberikan di bawah ini, dengan bidang bernama Id, Nama, Gaji, Penunjukan, dan Departemen. Buat kueri untuk mengambil detail karyawan yang memperoleh gaji lebih dari Rs 30000.
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
+------+--------------+-------------+-------------------+--------+
Kueri berikut mengambil detail karyawan menggunakan skenario di atas:
hive> SELECT * FROM employee WHERE salary>30000;
Saat eksekusi kueri berhasil, Anda akan melihat respons berikut:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
+------+--------------+-------------+-------------------+--------+
Program JDBC
Program JDBC untuk diterapkan di mana klausul untuk contoh yang diberikan adalah sebagai berikut.
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveQLWhere {
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
// create statement
Statement stmt = con.createStatement();
// execute statement
Resultset res = stmt.executeQuery("SELECT * FROM employee WHERE salary>30000;");
System.out.println("Result:");
System.out.println(" ID \t Name \t Salary \t Designation \t Dept ");
while (res.next()) {
System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5));
}
con.close();
}
}
Simpan program dalam file bernama HiveQLWhere.java. Gunakan perintah berikut untuk mengkompilasi dan menjalankan program ini.
$ javac HiveQLWhere.java
$ java HiveQLWhere
Keluaran:
ID Name Salary Designation Dept
1201 Gopal 45000 Technical manager TP
1202 Manisha 45000 Proofreader PR
1203 Masthanvali 40000 Technical writer TP
1204 Krian 40000 Hr Admin HR