HiveQL - Nerede Seçin
Hive Sorgu Dili (HiveQL), Hive'ın bir Metastore'daki yapılandırılmış verileri işlemesi ve analiz etmesi için kullanılan bir sorgu dilidir. Bu bölüm, SELECT ifadesinin WHERE yan tümcesi ile nasıl kullanılacağını açıklar.
SELECT deyimi, verileri bir tablodan almak için kullanılır. WHERE cümlesi bir koşula benzer şekilde çalışır. Koşulu kullanarak verileri filtreler ve size sonlu bir sonuç verir. Yerleşik operatörler ve işlevler, koşulu yerine getiren bir ifade üretir.
Sözdizimi
Aşağıda, SELECT sorgusunun sözdizimi verilmiştir:
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];
Misal
SELECT… WHERE cümlesi için bir örnek alalım. Id, Ad, Maaş, Görev ve Bölüm adlı alanlara sahip, aşağıda verilen çalışan tablosuna sahip olduğumuzu varsayın. 30000 Rs'den fazla maaş kazanan çalışan ayrıntılarını almak için bir sorgu oluşturun.
+------+--------------+-------------+-------------------+--------+
| 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 |
+------+--------------+-------------+-------------------+--------+
Aşağıdaki sorgu, yukarıdaki senaryoyu kullanarak çalışan ayrıntılarını alır:
hive> SELECT * FROM employee WHERE salary>30000;
Sorgunun başarıyla yürütülmesi üzerine aşağıdaki yanıtı görürsünüz:
+------+--------------+-------------+-------------------+--------+
| 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 |
+------+--------------+-------------+-------------------+--------+
JDBC Programı
Verilen örnek için nerede maddesinin uygulanacağı JDBC programı aşağıdaki gibidir.
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();
}
}
Programı HiveQLWhere.java adlı bir dosyaya kaydedin. Bu programı derlemek ve çalıştırmak için aşağıdaki komutları kullanın.
$ javac HiveQLWhere.java
$ java HiveQLWhere
Çıktı:
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