Apa itu Hive Query Language? HiveQL Operatorso

⚡ Ringkasan Cerdas

Hive Query Language menyediakan operator yang menggerakkan setiap ekspresi HiveQL, grupping ke dalam keluarga relasional, aritmatika, logis, tipe kompleks, dan konstruktor yang secara bersama-sama mencakup perbandingan, perhitungan, dan akses ke data bersarang.

  • 🧮 Lima kelompok operator: Operator relasional, aritmatika, logis, tipe kompleks, dan konstruktor mencakup setiap ekspresi yang dibutuhkan oleh kueri HiveQL.
  • 🔍 Perbandingan dapat dilakukan pada tipe data primitif apa pun: Operator relasional menerima semua tipe data primitif, sedangkan LIKE, RLIKE, dan REGEXP hanya bekerja pada string.
  • ➕ Aritmatika mencakup operasi bitwise: Selain empat operasi dasar tersebut, HiveQL juga menyediakan operasi modulo dan bitwise AND, OR, XOR, dan NOT pada tipe data angka.
  • 🧩 Data bersarang memiliki sintaks tersendiri: A[n] mencapai elemen array dan M[key] mencapai nilai peta, keduanya dapat digunakan di mana saja ekspresi diperbolehkan.
  • ️ Konstruktor membangun nilai-nilai kompleks: array(), map(), struct(), named_struct() dan create_union() menggabungkan kolom-kolom kompleks di dalam sebuah query.
  • 📚 Fungsi memperluas operator: Fungsi matematika, string, tanggal, kondisional, koleksi, dan agregasi menangani pekerjaan yang tidak dicakup oleh operator mana pun.

Apa itu operator Hive Query Language (HiveQL)?

Apa itu Bahasa Kueri Hive (HiveQL)?

Hive Query Language (HiveQL) adalah bahasa kueri Sarang Apache untuk memproses dan menganalisis data terstruktur. Ini memisahkan pengguna dari kompleksitas pemrograman MapReduce. Ia menggunakan kembali konsep umum dari basis data relasional, seperti tabel, baris, kolom, dan skema, untuk memudahkan pembelajaran. Hive menyediakan CLI untuk penulisan kueri Hive menggunakan Bahasa Kueri Hive (HiveQL).

Sebagian besar interaksi cenderung terjadi melalui antarmuka baris perintah (CLI). Secara umum, sintaks HiveQL mirip dengan SQL Sintaks yang paling dikenal oleh sebagian besar analis data. Empat format file yang disebutkan dalam dokumentasi Hive asli adalah TEXTFILE, SEQUENCEFILE, ORC, dan RCFILE (Record Columnar File); rilis saat ini juga membaca dan menulis Parquet dan Avro, dan ORC adalah format yang diasumsikan oleh sebagian besar panduan penyetelan.

Hive menggunakan basis data Derby terintegrasi untuk penyimpanan metadata pengguna tunggal. Untuk penerapan metastore multi-pengguna atau bersama, Hive menggunakan MySQL atau menggunakan basis data relasional eksternal lainnya, karena Derby hanya mengizinkan satu sesi dalam satu waktu.

HiveQL Bawaan Operatorso

Hive menyediakan operator bawaan untuk operasi data yang dijalankan terhadap tabel yang tersimpan di gudang data Hive.

Operator-operator ini bertindak pada operan di dalam sebuah ekspresi dan mengembalikan nilai sesuai dengan logika yang diterapkan, baik itu berupa perbandingan, perhitungan, atau pencarian ke dalam kolom bersarang.

Berikut adalah jenis-jenis operator bawaan utama di HiveQL:

  • Operator relasional
  • Operator aritmatika
  • operator logika
  • Operators pada tipe kompleks
  • Konstruktor tipe kompleks

Setiap famili dibahas dalam bagiannya masing-masing di bawah ini, beserta tabel operator lengkap untuk famili tersebut.

Relasional Operators di HiveQL

Kami menggunakan operator relasional untuk perbandingan hubungan antara dua operan.

  • Operakata-kata seperti sama dengan, tidak sama dengan, kurang dari, dan lebih besar dari.
  • Tipe operand dalam operator ini semuanya berupa tipe primitif, dan operator pencocokan pola hanya menerima string.

Setiap operator relasional mengembalikan nilai BOOLEAN, itulah sebabnya operator-operator ini menjadi dasar pembentukan klausa WHERE, kondisi JOIN, dan cabang CASE WHEN. Tabel berikut memberikan detail tentang operator relasional dan penggunaannya di HiveQL:

Built-in Operator Deskripsi Operand
X = Y TRUE jika ekspresi X setara dengan ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X != Y TRUE jika ekspresi X tidak setara dengan ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X < Y TRUE jika ekspresi X kurang dari ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X <= Y TRUE jika ekspresi X kurang dari atau sama dengan ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X > Y TRUE jika ekspresi X lebih besar dari ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X >= Y TRUE jika ekspresi X lebih besar dari atau sama dengan ekspresi Y. Jika tidak, FALSE. Dibutuhkan semua tipe primitif
X ADALAH BATAL TRUE jika ekspresi X bernilai NULL, jika tidak FALSE. Dibutuhkan semua jenis
X BUKAN NULL SALAH jika ekspresi X bernilai NULL, jika tidak, BENAR. Dibutuhkan semua jenis
X SEPERTI Y TRUE jika pola string X cocok dengan Y, jika tidak FALSE. Hanya membutuhkan String
X SUKA Y NULL jika X atau Y adalah NULL, TRUE jika ada substring dari X yang cocok dengan Java ekspresi reguler Y, jika tidak, SALAH. Hanya membutuhkan String
X REGEXP Y Sama seperti RLIKE. Hanya membutuhkan String

Perhatikan bahwa perbandingan terhadap NULL tidak pernah mengembalikan TRUE atau FALSE. Itulah alasan mengapa tabel tersebut mencantumkan IS NULL dan IS NOT NULL sebagai operator terpisah, bukan mengharapkan X = NULL untuk berfungsi.

Aritmatika HiveQL Operatorso

Kita menggunakan operator aritmatika untuk melakukan operasi aritmatika pada operan.

  • Operasi aritmatika seperti penjumlahan, pengurangantracOperasi perkalian dan pembagian antar operan menggunakan operator-operator ini.
  • Tipe operand dalam operator ini semuanya berupa tipe angka.

Contoh:

2 + 3 hasilnya 5.

Dalam contoh ini, '+' adalah operator, 2 dan 3 adalah operan, dan nilai kembaliannya adalah 5.

Tabel berikut memberikan detail tentang operator aritmatika dalam Bahasa Kueri Hive:

Built-in Operator Deskripsi Operand
X+Y Ini akan mengembalikan output penambahan nilai X dan Y. Dibutuhkan semua jenis angka
X – Y Ini akan mengembalikan output dari subtracMenghitung Y dari nilai X. Dibutuhkan semua jenis angka
X * Y Ini akan mengembalikan output perkalian nilai X dan Y. Dibutuhkan semua jenis angka
X / Y Ini akan mengembalikan output pembagian Y dari X. Dibutuhkan semua jenis angka
X % Y Ini akan mengembalikan sisa hasil pembagian X dengan Y. Dibutuhkan semua jenis angka
X & Y Ini akan mengembalikan output bitwise AND dari X dan Y. Dibutuhkan semua jenis angka
X | kamu Ini akan mengembalikan output bitwise OR dari X dan Y. Dibutuhkan semua jenis angka
X^Y Ini akan mengembalikan output bitwise XOR dari X dan Y. Dibutuhkan semua jenis angka
~X Ini akan mengembalikan output bitwise NOT dari X. Dibutuhkan semua jenis angka

Empat baris terakhir menggunakan operasi bitwise, bukan aritmatika biasa: operasi tersebut beroperasi pada representasi biner dari operan bilangan bulat, sehingga &, | dan ^ tidak sama dengan operasi logika AND, OR dan NOT yang akan dibahas di bagian selanjutnya.

Logika HiveQL Operatorso

Kita menggunakan operator logika untuk melakukan operasi logika pada operan.

  • Operasi logika seperti AND, OR, dan NOT antara operan menggunakan operator-operator ini.
  • Tipe operand pada operator ini semuanya bertipe BOOLEAN.

Tabel berikut memberikan detail tentang operator logika di HiveQL:

Operatorso Deskripsi Operands
X DAN Y BENAR jika X dan Y keduanya BENAR, jika tidak SALAH. Tipe Boolean saja
X && Y Sama seperti X DAN Y, tetapi di sini kita menggunakan simbol &&. Tipe Boolean saja
X ATAU Y BENAR jika X atau Y atau keduanya BENAR, jika tidak, SALAH. Tipe Boolean saja
X || kamu Sama seperti X ATAU Y, tetapi di sini kita menggunakan simbol ||. Tipe Boolean saja
BUKAN X BENAR jika X SALAH, jika tidak SALAH. Tipe Boolean saja
!X Sama seperti NOT X, tetapi di sini kita menggunakan simbol !. Tipe Boolean saja

Karena operator relasional mengembalikan nilai BOOLEAN, operator logika adalah yang menggabungkannya: sebuah predikat seperti salary > 50000 AND dept = 'Sales' menghubungkan satu keluarga ke keluarga lainnya.

Operators pada Tipe Kompleks

Operator relasional, aritmatika, dan logika semuanya bekerja pada nilai skalar tunggal. Hive juga menyimpan kolom array, map, dan struct, dan kolom-kolom tersebut membutuhkan mekanisme yang berbeda untuk mengakses elemen di dalamnya. Tabel berikut memberikan detail tentang operator tipe kompleks, yang menyediakan mekanisme tersebut:

Operatorso Operands Deskripsi
Sebuah] A adalah Array dan n adalah tipe integer Fungsi ini akan mengembalikan elemen ke-n dalam array A. Elemen pertama memiliki indeks 0.
M[kunci] M adalah Peta dan kuncinya bertipe K Fungsi ini akan mengembalikan nilai yang sesuai dengan kunci dalam peta tersebut.

Kedua bentuk tersebut merupakan ekspresi biasa, sehingga dapat muncul dalam daftar SELECT, klausa WHERE, atau GROUP BY, dan field struct diakses dengan notasi titik seperti S.field, bukan tanda kurung.

Konstruktor Tipe Kompleks

Operator di atas membaca kolom kompleks yang sudah ada, sedangkan konstruktor membangun kolom baru. Tabel berikut memberikan detail tentang konstruktor tipe kompleks, yang membuat instance dari tipe data kompleks — Array, Map, dan Struct — di Hive.

Pada bagian ini, kita akan melihat operasi yang dilakukan pada konstruktor tipe kompleks.

Operatorso Operands Deskripsi
susunan (val1, val2,…) Ini akan membuat array dengan elemen-elemen yang diberikan seperti yang disebutkan, misalnya val1, val2.
buat_gabungan (tanda, val1, val2,…) Ini akan membuat tipe gabungan dengan nilai yang dirujuk oleh parameter tag.
peta (kunci1, nilai1, kunci2, nilai2,…) Fungsi ini akan membuat peta dengan pasangan kunci/nilai yang diberikan seperti yang disebutkan dalam operand.
struktur bernama (nama1, val1, nama2, val2,…) Fungsi ini akan membuat Struct dengan nama field dan nilai yang disebutkan dalam operand.
struktur (val1, val2, val3,…) Membuat Struct dengan nilai field yang diberikan. Nama field Struct akan berupa col1, col2, dan seterusnya.

Konstruktor paling sering digunakan dalam perintah INSERT yang mengisi kolom kompleks, atau dalam perintah SELECT yang menggabungkan beberapa kolom skalar ke dalam satu struktur sebelum menulis hasilnya ke tabel lain.

Fungsi Bawaan HiveQL

OperaTor mencakup perbandingan, perhitungan, dan akses elemen, tetapi tidak membulatkan angka, memangkas string, atau melakukan substitusi.tracdua tanggal. Pekerjaan itu termasuk dalam fungsi bawaan Hive, yang dipanggil berdasarkan nama di dalam ekspresi yang sama tempat operator muncul. Tabel di bawah ini mengelompokkan keluarga fungsi yang pertama kali ditemui oleh pemula.

Keluarga fungsi Anggota tipikal Apa kegunaanya?
Matematis round(), floor(), ceil(), abs(), pow(), sqrt(), rand() Pembulatan, pangkat, dan perhitungan numerik lainnya pada nilai kolom tunggal.
String concat(), substr(), upper(), lower(), trim(), length(), regexp_replace() Pembersihan, pemangkasan, dan pembentukan ulangping teks sebelum dibandingkan atau dikelompokkan.
Tanggal tanggal_saat_ini, tahun(), bulan(), selisih_tanggal(), tambah_tanggal(), stempel_waktu_unix() ExtracMenentukan bagian-bagian tanggal dan mengukur interval antara dua tanggal.
Bersyarat jika(), KASUS KETIKA, koalesensi(), nvl(), tidak null() Memilih nilai pada tingkat baris dan mengganti NULL dengan nilai cadangan.
Koleksi ukuran(), kunci_peta(), nilai_peta(), isi_array(), urutkan_array() Memeriksa kolom array, map, dan struct yang dijangkau oleh operator tipe kompleks.
Jenis konversi cast(), binary() Memaksa kolom agar memiliki tipe data yang diharapkan oleh operator.
Agregat (UDAF) count(), sum(), avg(), min(), max(), collect_set() Menggabungkan banyak baris menjadi satu nilai, biasanya bersamaan dengan GROUP BY.

Daftar fungsi bergantung pada rilis Hive, jadi ada baiknya membacanya dari sesi itu sendiri daripada dari halaman statis. Dua pernyataan dapat melakukan hal itu:

SHOW FUNCTIONS;

DESCRIBE FUNCTION round;

DESCRIBE FUNCTION EXTENDED round;

SHOW FUNCTIONS mencantumkan setiap nama yang terdaftar, DESCRIBE FUNCTION mencetak tanda tangan satu baris, dan bentuk EXTENDED menambahkan contoh penggunaan di mana kelas yang mengimplementasikannya menyediakannya. Jika tidak ada fungsi bawaan yang sesuai, Hive menerima sebuah fungsi yang ditentukan pengguna ditulis dalam Java.

HiveQL vs SQL: Perbedaan Utama

HiveQL sengaja meminjam sintaks SQL, dan tabel operator di atas akan tampak familiar bagi siapa pun yang pernah menulis SQL. Namun, model eksekusi di baliknya tidak sama, dan perbedaannya akan terlihat segera setelah kueri melampaui perintah SELECT sederhana.

Perilaku sarang QL SQL Tradisional (RDBMS)
Penanganan skema Skema saat dibaca — skema diterapkan saat file diakses. Skema saat penulisan — skema diterapkan saat baris dimasukkan.
Pembaruan dan penghapusan tingkat baris Hanya didukung pada tabel ACID; tabel terkelola secara default berjenis ACID sejak Hive 3.0. Didukung di setiap tabel secara default.
Indeks Dukungan indeks dihapus di Hive 3.0 (HIVE-18448); indeks tingkat file ORC atau Parquet dan tampilan materialisasi menggantikannya. B-tree dan indeks sekunder lainnya merupakan fitur inti.
Eksekusi dan latensi Mengkompilasi ke pekerjaan batch pada Tez, MapReduce atau Spark, jadi bahkan pertanyaan kecil pun memerlukan biaya awal pekerjaan. Eksekusi interaktif, biasanya dalam milidetik
Tujuan desain Throughput pada file berukuran sangat besar di HDFS atau penyimpanan objek. Pembacaan dan penulisan dengan latensi rendah pada satu server atau klaster.

Konsekuensi praktis bagi penulisan ekspresif memang kecil, tetapi nyata. OperaOperator berperilaku seperti yang diharapkan, namun predikat yang akan dijawab dari indeks dalam basis data relasional dijawab di Hive dengan memindai file, sehingga penyaringan pada kolom partisi biasanya jauh lebih berharga daripada menyetel operator itu sendiri.

Pertanyaan Umum Demo Slot

Kata kunci, operator seperti AND atau LIKE, dan nama fungsi diproses tanpa membedakan huruf besar/kecil, sehingga SELECT dan select berperilaku sama. Data string berbeda: membandingkan 'Sales' dengan 'sales' akan menghasilkan FALSE kecuali jika upper() atau lower() diterapkan terlebih dahulu.

X / Y selalu menghasilkan DOUBLE, bahkan ketika kedua operand adalah bilangan bulat, jadi 7 / 2 menghasilkan 3.5 dan bukan 3. Gunakan kata kunci DIV untuk pembagian bilangan bulat dan operator % untuk sisanya.

Operator aritmatika dan perbandingan menyebarkan NULL: ekspresi apa pun yang melibatkan NULL akan dievaluasi menjadi NULL, bukan FALSE. Uji dengan IS NULL atau IS NOT NULL, dan ganti dengan operator fallback seperti coalesce() atau nvl() sebelum nilai tersebut mencapai operator.

LIKE menggunakan karakter wildcard SQL, di mana % cocok dengan rangkaian karakter apa pun dan _ cocok dengan satu rangkaian karakter. RLIKE cocok dengan sebuah Java ekspresi reguler terhadap substring apa pun dari nilai tersebut. REGEXP adalah sinonim untuk RLIKE dan berperilaku identik.

Operator aritmatika mengikat terlebih dahulu, kemudian operator perbandingan, lalu NOT, kemudian AND, lalu OR. Karena urutan ini mudah disalahartikan dalam predikat yang panjang, tanda kurung disarankan setiap kali AND dan OR muncul dalam klausa yang sama.

Ya. Operator relasional dan logis membentuk kondisi gabungan, operator aritmatika dapat menghasilkan grup.ping Kunci, dan akses tipe kompleks seperti M[key] berlaku di mana pun ekspresi diizinkan, termasuk daftar SELECT, klausa WHERE, dan ORDER BY.

Asisten pembelajaran mesin menerjemahkan filter bahasa biasa menjadi predikat kandidat dan menandai ketidaksesuaian tipe, seperti membandingkan kolom string dengan angka. Selalu konfirmasikan operator yang dihasilkan terhadap tabel di atas, karena dialek berbeda antara Hive, Spark SQL dan Presto.

Ia menangani predikat umum dengan baik dan menyarankan pola coalesce() atau CASE WHEN dari komentar singkat. Ia juga mencampur sintaks dari mesin lain, jadi verifikasi operator bitwise, akses tipe kompleks, dan nama fungsi apa pun dengan DESCRIBE FUNCTION sebelum menjalankan kueri.

Ringkaslah postingan ini dengan: