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