Tipe Data Hive: Cara Membuat dan Melepaskan Database di Hive
⚡ Ringkasan Cerdas
Tipe data Hive mendefinisikan apa yang dapat ditampung oleh setiap kolom tabel, dan perintah CREATE DATABASE dan DROP DATABASE mengatur atau menghapus namespace tempat tabel-tabel tersebut berada di dalam metastore Hive.

Tipe data merupakan elemen yang sangat penting dalam bahasa kueri Hive dan pemodelan data. Untuk mendefinisikan tipe kolom tabel, kita harus mengetahui tentang tipe data dan penggunaannya.
Berikut ini adalah gambaran singkat beberapa tipe data yang ada di Hive:
- Tipe Numerik
- Jenis Tali
- Jenis Tanggal/Waktu
- Jenis Kompleks
Tipe data di Hive
Setiap kolom Hive dideklarasikan dengan salah satu tipe di bawah ini. Keluarga tipe primitif didahulukan, diikuti oleh tipe kompleks yang menyimpan lebih dari satu nilai dalam satu kolom.
Tipe Data Numerik Sarang
Kolom numerik berkisar dari satu byte hingga delapan byte, jadi memilih tipe terkecil yang sesuai dengan nilai tersebut akan mengurangi biaya penyimpanan dan pemindaian.
| Tipe | Alokasi memori |
|---|---|
| kecil | Bilangan bulat bertanda 1 byte (-128 hingga 127) |
| kecil | Bilangan bulat bertanda 2 byte (-32,768 hingga 32,767) |
| INT | Bilangan bulat bertanda 4 byte (-2,147,483,648 hingga 2,147,483,647) |
| BESAR | Bilangan bulat bertanda 8 byte (-9,223,372,036,854,775,808 hingga 9,223,372,036,854,775,807) |
| FLOAT | Bilangan floating point presisi tunggal 4-byte |
| DUA KALI LIPAT | Bilangan floating point presisi ganda 8-byte |
| DESIMAL | Kita dapat mendefinisikan presisi dan skala dalam tipe ini, sebagai DECIMAL(presisi, skala). Jika keduanya dihilangkan, Hive menggunakan DECIMAL(10,0). |
Tipe Data String Sarang
Kolom karakter hadir dalam tiga bentuk, dan perbedaannya terletak pada apakah Hive memberlakukan panjang yang telah ditentukan.
| Tipe | Panjang |
|---|---|
| ARANG | Panjang tetap, hingga 255 karakter. Nilai yang lebih pendek akan diberi spasi. |
| Varchar | 1 hingga 65,535 karakter. Nilai yang lebih panjang akan dipotong tanpa pemberitahuan. |
| STRING | Kita dapat menentukan panjang di sini (tanpa batasan) |
Tipe Data Tanggal/Waktu Sarang
Kolom temporal disimpan tanpa offset zona waktu, yang perlu diingat sebelum membandingkan nilai yang ditulis oleh klaster yang berbeda.
| Tipe | penggunaan |
|---|---|
| Timestamp | Mendukung tradisional Unix stempel waktu dengan presisi nanodetik opsional |
| Tanggal | Formatnya adalah YYYY-MM-DD. Rentang nilai yang didukung untuk tipe Tanggal adalah 0000-01-01 hingga 9999-12-31, bergantung pada dukungan oleh tipe data primitif. Java tanggal biasa |
Berbagai Tipe Data Hive
Dua tipe data dasar lainnya berada di luar keluarga numerik, string, dan tanggal, tetapi muncul secara teratur dalam skema nyata.
| Tipe | penggunaan |
|---|---|
| BOLEAN | Menyimpan nilai benar atau salah |
| BINARY | Menyimpan larik byte, yang menjaga agar konten mentah tidak masuk ke dalam kolom STRING. |
Tipe Data Kompleks Hive
Tipe data kompleks menyusun nilai-nilai di dalam satu kolom, yang menghilangkan penggabungan tambahan yang dibutuhkan oleh desain relasional.
| Tipe | penggunaan |
|---|---|
| Array | HIMPUNAN Nilai negatif dan ekspresi non-konstan tidak diperbolehkan |
| Peta | PETA Nilai negatif dan ekspresi non-konstan tidak diperbolehkan |
| Struktur | STRUKTUR |
| Serikat | JENIS SERIKAT |
Contoh Tipe Data Kompleks Hive
Tabel di atas memberikan bentuk deklarasi. Pernyataan di bawah ini menggabungkan tiga tipe kompleks ke dalam satu tabel sehingga klausa pembatas dan sintaks akses dapat dilihat bersamaan.
CREATE TABLE employees ( name STRING, skills ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, pin:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
Tiga pembatas terpisah diperlukan di sini: satu di antara kolom, yang kedua di antara item ARRAY atau STRUCT, dan yang ketiga di antara kunci MAP dan nilainya. Setelah tabel ada, setiap kolom kompleks dibaca dengan aksesori masing-masing.
SELECT name, skills[0], deductions['tax'], address.city FROM employees;
Tabel di bawah ini merangkum aksesori mana yang termasuk ke tipe mana.
| Tipe | Bagaimana suatu nilai dibaca |
|---|---|
| HIMPUNAN | Indeks berbasis nol, seperti keterampilan[0] |
| MAP | Pencarian kata dalam tanda kurung siku, seperti deductions['tax'] |
| STRUKTUR | Notasi titik pada nama kolom, seperti address.city |
| JENIS SERIKAT | Jarang digunakan, karena dukungan kueri untuknya masih belum lengkap. |
Tipe kompleks dapat bersarang, jadi ARRAY > adalah deklarasi kolom yang valid. Setelah tata letak kolom ditetapkan, tabel itu sendiri dibangun dengan pernyataan yang dibahas di Hive membuat, mengubah, dan menghapus tabel.
Cara Membuat dan Melepaskan Database di Hive
Dalam Hive, basis data hanyalah sebuah namespace yang mengelompokkan tabel, jadi ini adalah objek pertama yang harus dibuat sebelum pekerjaan tabel dimulai. Berikut adalah langkah-langkah cara membuat dan menghapus basis data di Hive.
Langkah 1) Buat Database di Hive
Untuk membuat database di Hive shell, kita harus menggunakan perintah seperti yang ditunjukkan pada sintaks di bawah ini:
sintaks:
Create database <DatabaseName>
Contoh: Buat basis data “guru99”
Tangkapan layar di bawah ini menunjukkan pernyataan pembuatan yang diikuti oleh perintah tampilan yang mencantumkan setiap basis data pada klaster.
Berdasarkan tangkapan layar di atas, kita melakukan dua hal:
- Membuat database "guru99" di Hive
- Menampilkan basis data yang ada menggunakan perintah “show”
Pada layar yang sama, basis data “guru99” ditampilkan di bagian akhir ketika kita menjalankan perintah show, yang berarti basis data “guru99” berhasil dibuat.
Langkah 2) Hapus Database di Hive
Untuk menjatuhkanping Untuk menghapus basis data di Hive shell, kita harus menggunakan perintah "drop" seperti yang ditunjukkan pada sintaks di bawah ini:
sintaks:
Drop database <DatabaseName>
Contoh: Hapus basis data guru99
Pada tangkapan layar berikutnya, perintah drop dijalankan terlebih dahulu, dan perintah show yang mengikutinya tidak lagi menampilkan daftar basis data.
Pada tangkapan layar di atas, kita melakukan dua hal:
- Kita jatuhping basis data 'guru99' dari Hive
- Memeriksa silang hal yang sama dengan perintah “show”
Pada layar yang sama, setelah memeriksa basis data dengan perintah show, basis data “guru99” tidak muncul di dalam Hive. Jadi, kita dapat memastikan sekarang bahwa basis data “guru99” telah dihapus.
Perintah Database Hive: USE, DESCRIBE, SHOW dan ALTER DATABASE
Kedua pernyataan di atas menggunakan bentuk terpendeknya. Sintaks yang didokumentasikan memiliki klausa opsional yang menentukan ke mana file akan disimpan dan apa yang terjadi jika nama tersebut sudah digunakan.
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
Kata kunci DATABASE dan SCHEMA dapat saling menggantikan di seluruh kode, jadi CREATE SCHEMA dan CREATE DATABASE melakukan hal yang sama persis. Perintah-perintah lainnya melengkapi pekerjaan sehari-hari dengan sebuah namespace.
| perintah | Apa yang dilakukannya |
|---|---|
| TAMPILKAN DATABASES; | Mencantumkan semua basis data yang terdaftar di metastore. |
| GUNAKAN nama_database; | Mengatur basis data saat ini sehingga nama tabel tidak memerlukan awalan. |
| DESCRIBE DATABASE database_name; | Laporan tersebut memuat komentar, lokasi HDFS, dan pemiliknya. |
| DESCRIBE DATABASE EXTENDED database_name; | Menambahkan pasangan kunci-nilai DBPROPERTIES ke output tersebut. |
| ALTER DATABASE database_name SET DBPROPERTIES (…); | Menambahkan atau mengganti properti metadata |
| ALTER DATABASE database_name SET OWNER USER user_name; | Mengalihkan kepemilikan ke pengguna atau peran lain |
| ALTER DATABASE database_name SET LOCATION hdfs_path; | Mengubah jalur yang digunakan oleh tabel yang dibuat mulai saat itu. |
Dua pengaturan default perlu diingat. Tanpa klausa LOCATION, file akan berada di bawah direktori gudang, biasanya /user/hive/warehouse/database_name.db, dan tanpa IF EXISTS, penghapusan terhadap nama yang hilang akan menimbulkan kesalahan alih-alih berjalan tanpa masalah. Kedua pengaturan tersebut disimpan di dalam Metastore Hive.
Konversi Tipe Data Hive dan Kesalahan Umum
Tipe data tidak selalu digunakan persis seperti yang dideklarasikan. Hive secara otomatis memperluas nilai ketika tidak ada informasi yang dapat hilang, dan menyerahkan hal lainnya pada konversi eksplisit.
- Pelebaran implisit mengikuti rantai TINYINT ke SMALLINT ke INT ke BIGINT ke FLOAT ke DOUBLE, dan STRING yang berisi angka dipromosikan menjadi DOUBLE.
- Penyempitan tipe data tidak pernah terjadi dengan sendirinya, jadi tipe data DOUBLE yang diberikan pada kolom INT memerlukan konversi tertulis.
- CAST melakukan konversi yang tertulis tersebut, dan mengembalikan NULL alih-alih kesalahan ketika nilai tersebut tidak dapat dikonversi.
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;
Kesalahan-kesalahan di bawah ini mencakup sebagian besar kejutan yang ditemui pemula pada skema pertama mereka.
| Gejala | Penyebab dan solusinya |
|---|---|
| Penghapusan gagal sementara basis data masih menyimpan tabel. | RESTRICT adalah pengaturan default. Tambahkan CASCADE untuk menghapus tabel yang menggunakan perintah ini. |
| Seutas tali panjang tiba dalam keadaan dipersingkat. | Tipe data VARCHAR akan memotong teks secara diam-diam setelah melebihi panjang yang dideklarasikan. Gunakan STRING jika tidak ada batasan panjang yang diinginkan. |
| Sebuah kolom terbaca sebagai NULL setelah konversi. | CAST tidak dapat menguraikan nilai tersebut. Periksa data sumber sebelum memperluas tipe data. |
| Nilai mata uang kehilangan paise atau sennya. | DECIMAL tanpa argumen berarti DECIMAL(10,0). Nyatakan skala secara eksplisit. |
| Dua tanggal yang tampak identik tidak pernah cocok. | Tipe data STRING dan kolom DATE berbeda. Lakukan pengecekan pada satu sisi sebelum membandingkan. |
Setelah tipe data berfungsi dengan baik, langkah selanjutnya adalah memuat dan melakukan query data itu sendiri, yang akan dibahas dalam Kueri Hive dengan Order By, Group By dan Cluster By.


