Hive menyediakan bahasa kueri tipe SQL untuk tujuan ETL di atas sistem file Hadoop.
Bahasa Query Hive (HiveQL) menyediakan lingkungan tipe SQL di Hive untuk bekerja dengan tabel, database, kueri.
Kita dapat memiliki jenis Klausul berbeda yang terkait dengan Hive untuk melakukan manipulasi dan kueri data jenis yang berbeda. Untuk konektivitas yang lebih baik dengan node berbeda di luar lingkungan. HIVE juga menyediakan konektivitas JDBC.
Kueri sarang menyediakan fitur-fitur berikut:
- Pemodelan data seperti Pembuatan database, tabel, dll.
- Fungsi ETL seperti Ekstraksi, Transformasi, dan Memuat data ke dalam tabel
- Bergabung untuk menggabungkan tabel data yang berbeda
- Skrip kustom khusus pengguna untuk kemudahan kode
- Alat kueri lebih cepat di atas Hadoop
Dalam artikel ini, Anda akan belajar-
- Urutkan berdasarkan kueri
- Kelompokkan menurut kueri
- Sortir dengan
- Kluster Menurut
- Distribusikan Menurut
Membuat Meja di Sarang
Sebelum memulai topik utama tutorial ini, pertama kita akan membuat tabel untuk digunakan sebagai referensi untuk tutorial berikut ini.
Di sini, di tutorial ini, kita akan membuat tabel "employee_guru" dengan 6 kolom.
Dari tangkapan layar di atas,
- Kami membuat tabel "employee_guru" dengan 6 nilai kolom seperti Id, Nama, Umur, Alamat, Gaji, Departemen, milik karyawan yang ada di organisasi "guru."
- Di sini, di langkah ini kami memuat data ke dalam tabel employee_guru. Data yang akan kita muat akan ditempatkan di bawah file Employees.txt
Urutkan berdasarkan kueri:
Sintaks ORDER BY di HiveQL mirip dengan sintaks ORDER BY dalam bahasa SQL.Diurutkan berdasarkan klausa yang kita gunakan dengan pernyataan "PILIH" dalam kueri Hive, yang membantu mengurutkan data. Urutkan menurut klausa menggunakan kolom pada tabel Hive untuk mengurutkan nilai kolom tertentu yang disebutkan dengan Urutkan menurut. Untuk nama kolom apa pun yang kita tentukan urutannya menurut klausa kueri akan memilih dan menampilkan hasil dengan urutan naik atau turun nilai kolom tertentu.
Jika urutan menurut field yang disebutkan adalah string, maka akan ditampilkan hasilnya dalam urutan leksikografis. Di bagian belakang, itu harus diteruskan ke peredam tunggal.
Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut ini
- Ini adalah kueri yang tampil di tabel "employee_guru" dengan klausa ORDER BY dengan Departemen seperti yang ditentukan nama kolom ORDER BY.
"Departemen" adalah String sehingga menampilkan hasil berdasarkan urutan leksikografis.
- Ini adalah keluaran aktual untuk kueri. Jika kita amati dengan baik, kita dapat melihat bahwa itu mendapatkan hasil yang ditampilkan berdasarkan kolom Departemen seperti ADMIN, Keuangan dan sebagainya agar orderQuery dilakukan.
Pertanyaan:
SELECT * FROM employees_guru ORDER BY Department;
Kelompokkan menurut kueri:
Kelompokkan menurut klausa menggunakan kolom pada tabel sarang untuk mengelompokkan nilai kolom tertentu yang disebutkan dengan kelompok oleh. Untuk nama kolom apa pun yang kita definisikan dengan klausa "groupby", kueri akan memilih dan menampilkan hasil dengan mengelompokkan nilai kolom tertentu.
Misalnya, di screenshot di bawah ini akan menampilkan jumlah total karyawan yang hadir di setiap departemen. Di sini kita memiliki "Departemen" sebagai Kelompok berdasarkan nilai.
Dari tangkapan layar di atas, kami akan mengamati yang berikut ini
- Ini adalah kueri yang dilakukan pada tabel "employee_guru" dengan klausa GROUP BY dengan Departemen sebagaimana ditentukan nama kolom GROUP BY.
- Output yang ditampilkan di sini adalah nama departemen, dan jumlah karyawan di departemen yang berbeda. Di sini semua karyawan milik departemen tertentu dikelompokkan dan ditampilkan di hasil. Sehingga dihasilkan nama departemen dengan jumlah karyawan yang hadir di setiap departemen.
Pertanyaan:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Sortir dengan:
Urutkan berdasarkan klausa dilakukan pada nama kolom tabel Hive untuk mengurutkan output. Kami dapat menyebutkan DESC untuk mengurutkan urutan dalam urutan turun dan menyebutkan ASC untuk urutan naik semacam itu.
Dalam penyortiran ini, itu akan menyortir baris sebelum diumpankan ke peredam. Selalu urutkan berdasarkan bergantung pada tipe kolom.
Misalnya, jika tipe kolom adalah numerik maka akan diurutkan dalam urutan numerik jika tipe kolom adalah string maka akan diurutkan dalam urutan leksikografis.
Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:
- Ini adalah query yang ditampilkan pada tabel "employee_guru" dengan klausa SORT BY dengan "id" sebagai mendefinisikan nama kolom SORT BY. Kami menggunakan kata kunci DESC.
- Jadi, keluaran yang ditampilkan akan dalam urutan "id".
Pertanyaan:
SELECT * from employees_guru SORT BY Id DESC;
Kluster Oleh:
Cluster By digunakan sebagai alternatif untuk klausa Distribute BY dan Sort BY di Hive-QL.
Klausa Cluster BY digunakan pada tabel yang ada di Hive. Hive menggunakan kolom di Cluster by untuk mendistribusikan baris di antara reduksi. Kolom Cluster BY akan menuju ke beberapa reduksi.
- Ini memastikan urutan pengurutan nilai yang ada di beberapa reduksi
Misalnya, Cluster By clause disebutkan pada nama kolom Id dari tabel employee_guru tabel. Output saat menjalankan kueri ini akan memberikan hasil ke beberapa reduksi di bagian belakang. Tapi sebagai front end, ini adalah klausa alternatif untuk Sort By dan Distribute By.
Ini sebenarnya adalah proses back end ketika kita melakukan query dengan sort by, group by, dan cluster by dalam kerangka Map reduce. Jadi jika kami ingin menyimpan hasil ke beberapa reduksi, kami menggunakan Cluster By.
Dari tangkapan layar di atas kita mendapatkan pengamatan berikut:
- Ini adalah kueri yang melakukan klausa CLUSTER BY pada nilai bidang Id. Di sini akan mendapatkan semacam nilai Id.
- Ini menampilkan Id dan Nama yang ada dalam urutan guru_employees yang diurutkan oleh
Pertanyaan:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Distribusikan Menurut:
Distribusikan BY klausa yang digunakan pada tabel yang ada di Hive. Sarang menggunakan kolom di Distribusikan oleh untuk mendistribusikan baris di antara pereduksi. Semua kolom Distribute BY akan menuju ke peredam yang sama.
- Ini memastikan setiap pereduksi N mendapatkan rentang kolom yang tidak tumpang tindih
- Itu tidak mengurutkan output dari setiap peredam
Dari tangkapan layar di atas, kita dapat mengamati yang berikut ini
- DISTRIBUSI MENURUT Klausul yang ditampilkan pada Id tabel "empoloyees_guru"
- Output menunjukkan Id, Name. Di bagian belakang, itu akan menuju ke peredam yang sama
Pertanyaan:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;