Hive menyediakan bahasa pertanyaan jenis SQL untuk tujuan ETL di atas sistem fail Hadoop.
Bahasa Hive Query (HiveQL) menyediakan persekitaran jenis SQL di Hive untuk berfungsi dengan jadual, pangkalan data, pertanyaan.
Kita boleh mempunyai pelbagai jenis Klausa yang berkaitan dengan Hive untuk melakukan manipulasi dan pertanyaan data jenis yang berbeza. Untuk penyambungan yang lebih baik dengan nod yang berlainan di luar persekitaran. HIVE juga menyediakan sambungan JDBC.
Pertanyaan sarang menyediakan ciri-ciri berikut:
- Pemodelan data seperti Pembuatan pangkalan data, jadual, dll.
- Fungsi ETL seperti Pengekstrakan, Transformasi, dan Memuatkan data ke dalam jadual
- Bergabung untuk menggabungkan jadual data yang berbeza
- Skrip khas khusus pengguna untuk kemudahan kod
- Alat pertanyaan lebih cepat di atas Hadoop
Dalam artikel ini, anda akan belajar-
- Susun mengikut pertanyaan
- Kumpulkan mengikut pertanyaan
- Disusun mengikut
- Kluster Oleh
- Sebarkan Oleh
Membuat Jadual di Sarang
Sebelum memulakan dengan topik utama kami untuk tutorial ini, pertama kita akan membuat jadual untuk menggunakannya sebagai rujukan untuk tutorial berikut.
Di sini dalam tutorial ini, kita akan membuat jadual "karyawan_guru" dengan 6 lajur.
Dari tangkapan skrin di atas,
- Kami membuat jadual "karyawan_guru" dengan 6 nilai lajur seperti Id, Nama, Umur, Alamat, Gaji, Jabatan, yang dimiliki oleh pekerja yang hadir dalam organisasi "guru."
- Di sini, dalam langkah ini kita memuatkan data ke dalam jadual karyawan_guru. Data yang akan kami muatkan akan diletakkan di bawah fail Employees.txt
Pesan mengikut pertanyaan:
Sintaks ORDER BY dalam HiveQL adalah serupa dengan sintaks ORDER BY dalam bahasa SQL.Order by adalah klausa yang kita gunakan dengan pernyataan "SELECT" dalam pertanyaan Hive, yang membantu menyusun data. Susun mengikut klausa gunakan lajur pada jadual Hive untuk menyusun nilai lajur tertentu yang disebut dengan Susunan oleh. Untuk apa sahaja nama lajur, kami menentukan urutan dengan klausa, pertanyaan akan memilih dan memaparkan hasilnya dengan menaik atau menurun mengikut urutan nilai lajur tertentu.
Sekiranya urutan berdasarkan bidang yang disebut adalah rentetan, maka urutannya akan memaparkan hasilnya dalam urutan leksikografis. Di hujung belakang, ia mesti diserahkan kepada pengurang tunggal.
Dari tangkapan skrin Di Atas, kita dapat melihat perkara berikut
- Ini adalah pertanyaan yang dilakukan pada jadual "karyawan_guru" dengan klausa ORDER BY dengan Department seperti yang ditentukan nama lajur ORDER BY.
"Department" adalah String sehingga akan memaparkan hasil berdasarkan urutan leksikografi.
- Ini adalah output sebenar untuk pertanyaan. Sekiranya kita memerhatikannya dengan betul, kita dapat melihat hasilnya dipaparkan berdasarkan lajur Jabatan seperti ADMIN, Kewangan dan sebagainya agar pesanan dapat dilaksanakan.
Pertanyaan:
SELECT * FROM employees_guru ORDER BY Department;
Kumpulkan mengikut pertanyaan:
Kumpulan mengikut klausa menggunakan lajur pada jadual Hive untuk mengelompokkan nilai lajur tertentu yang disebut dengan kumpulan oleh. Untuk apa jua nama lajur, kami mendefinisikan klausa "groupby", pertanyaan akan memilih dan memaparkan hasil dengan mengelompokkan nilai lajur tertentu.
Sebagai contoh, dalam tangkapan skrin di bawah ini akan menunjukkan jumlah pekerja yang hadir di setiap jabatan. Di sini kita mempunyai "Jabatan" sebagai Kumpulan mengikut nilai.
Dari tangkapan skrin di atas, kita akan memerhatikan perkara berikut
- Ini adalah pertanyaan yang dilakukan pada jadual "karyawan_guru" dengan klausa GROUP BY dengan Department seperti yang ditentukan nama lajur GROUP BY.
- Output yang ditunjukkan di sini adalah nama jabatan, dan pekerja dikira di jabatan yang berbeza. Di sini semua pekerja milik jabatan tertentu dikelompokkan dan dipaparkan dalam hasilnya. Maka hasilnya adalah nama jabatan dengan jumlah pekerja yang hadir di setiap jabatan.
Pertanyaan:
SELECT Department, count(*) FROM employees_guru GROUP BY Department;
Disusun mengikut:
Urutkan mengikut klausa dilakukan pada nama lajur jadual Hive untuk menyusun output. Kita boleh menyebut DESC untuk menyusun urutan dalam urutan menurun dan menyebut ASC untuk urutan menaik dari jenis tersebut.
Dalam urutan ini, ia akan menyusun baris sebelum memberi makan kepada pengurang. Selalu urutkan mengikut jenis lajur.
Sebagai contoh, jika jenis lajur berangka, ia akan disusun dalam urutan numerik jika jenis lajur berangkai maka akan disusun dalam urutan leksikografis.
Dari tangkapan skrin di atas, kita dapat melihat perkara berikut:
- Ini adalah pertanyaan yang berprestasi di atas meja "karyawan_guru" dengan klausa SORT BY dengan "id" sebagai menentukan nama lajur SORT BY. Kami menggunakan kata kunci DESC.
- Jadi output yang dipaparkan akan berada dalam urutan menurun "id".
Pertanyaan:
SELECT * from employees_guru SORT BY Id DESC;
Kluster Oleh:
Cluster By digunakan sebagai alternatif untuk klausa Distribut BY dan Sort BY di Hive-QL.
Klausa BY klausa digunakan pada jadual yang terdapat di Hive. Hive menggunakan lajur di Cluster dengan mengedarkan baris di antara pengurang. Lajur Cluster BY akan pergi ke pelbagai pengurang.
- Ini memastikan susunan nilai yang terdapat dalam pelbagai pengurang
Sebagai contoh, klausa Oleh klausa yang disebutkan pada lajur Id nama jadual pekerja_guru. Keluaran semasa melaksanakan pertanyaan ini akan memberikan hasil kepada pelbagai pengurang di hujung belakang. Tetapi sebagai bahagian depan adalah klausa alternatif untuk Sort By dan Distribut By.
Ini sebenarnya adalah proses back end ketika kita melakukan pertanyaan dengan mengurutkan, mengelompokkan, dan mengelompokkan dari segi kerangka pengurangan Peta. Oleh itu, jika kita mahu menyimpan hasil menjadi beberapa pengurang, kita menggunakan Cluster By.
Dari tangkapan skrin di atas, kami mendapat pemerhatian berikut:
- Ini adalah pertanyaan yang melaksanakan klausa CLUSTER BY pada nilai medan Id. Di sini akan mendapat semacam nilai Id.
- Ia memaparkan Id dan Nama yang terdapat pada guru_pekerja yang disusun mengikut
Pertanyaan:
SELECT Id, Name from employees_guru CLUSTER BY Id;
Sebarkan Oleh:
Sebarkan klausa BY yang digunakan pada jadual yang terdapat di Hive. Hive menggunakan lajur di Sebarkan oleh untuk mengedarkan baris di antara pengurang. Semua lajur Sebarkan BY akan menggunakan pengurang yang sama.
- Ia memastikan setiap pengurang N mendapat julat lajur yang tidak bertindih
- Ia tidak menyusun output setiap pengurang
Dari tangkapan skrin di atas, kita dapat melihat perkara berikut
- PENGAGIHAN MENGIKUT Klausa yang dilakukan pada jadual Id "empoloyees_guru"
- Keluaran menunjukkan Id, Nama. Di hujung belakang, ia akan menggunakan pengurang yang sama
Pertanyaan:
SELECT Id, Name from employees_guru DISTRIBUTE BY Id;