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 numerik: TINYINT hingga BIGINT mencakup bilangan bulat, sedangkan DECIMAL(precision, scale) menyimpan nilai pasti yang tidak dapat dilakukan oleh FLOAT dan DOUBLE.
  • 🔤 Tipe data string: Tipe data STRING tidak memiliki batasan yang ditentukan, VARCHAR menerima 1 hingga 65535 karakter, dan CHAR dibatasi hingga 255 karakter.
  • 📅 Tanggal dan waktu: DATE menyimpan nilai YYYY-MM-DD biasa dan TIMESTAMP menambahkan presisi nanodetik opsional di atasnya.
  • 🧩 Jenis kompleks: ARRAY, MAP, STRUCT, dan UNIONTYPE menggabungkan beberapa nilai terkait ke dalam satu kolom, bukan banyak nilai.
  • ️ Buat basis data: Perintah CREATE DATABASE mendaftarkan namespace di metastore, dan SHOW DATABASES mengkonfirmasi keberadaannya.
  • ️ Hapus basis data: Perintah DROP DATABASE menghapus namespace, dan CASCADE diperlukan setiap kali tabel masih berada di dalamnya.

Tipe data Hive dan cara membuat serta menghapus basis data di 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.

Shell Hive membuat basis data guru99 dan menampilkan daftar basis data dengan perintah show.

Berdasarkan tangkapan layar di atas, kita melakukan dua hal:

  1. Membuat database "guru99" di Hive
  2. 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.

Jatuhan cangkang sarang lebahping basis data guru99 dan konfirmasi penghapusan dengan pertunjukan

Pada tangkapan layar di atas, kita melakukan dua hal:

  1. Kita jatuhping basis data 'guru99' dari Hive
  2. 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.

Pertanyaan Umum Demo Slot

Tidak. DATABASE dan SCHEMA adalah kata kunci yang dapat saling menggantikan di HiveQL, jadi CREATE SCHEMA sales dan CREATE DATABASE sales menghasilkan objek metastore yang sama. Pilihan tersebut murni masalah gaya penulisan kode.

Di bawah direktori gudang data, biasanya /user/hive/warehouse/database_name.db di HDFS. Klausa LOCATION pada CREATE DATABASE akan menimpa jalur tersebut, dan DESCRIBE DATABASE akan melaporkan lokasi mana pun yang sebenarnya digunakan.

STRING adalah pilihan umum karena tidak memiliki batasan yang ditentukan dan tidak memerlukan padding. VARCHAR berguna ketika panjang harus dibatasi, dan CHAR cocok untuk kode pendek dengan lebar tetap seperti singkatan negara.

DOUBLE adalah tipe data floating point biner, sehingga penjumlahan berulang akan mengalami penyimpangan dalam pecahan sen. DECIMAL menyimpan nilai pasti pada presisi dan skala yang ditentukan, yang menjaga agar total keuangan tetap dapat direproduksi di berbagai proses.

TIMESTAMP biasa tidak dipengaruhi zona waktu dan dibaca kembali persis seperti yang ditulis. Hive 3.1 menambahkan TIMESTAMP WITH LOCAL TIME ZONE, yang menormalkan nilai ke UTC saat penulisan dan mengonversinya saat pembacaan.

Ya. Sebuah STRUCT dapat berada di dalam sebuah ARRAY dan nilai MAP itu sendiri dapat berupa STRUCT, jadi ARRAY > berlaku di Sarang lebahPenataan bertingkat yang dalam mempersulit pembatas, jadi buatlah penataannya dangkal.

Ya. Alat pembuatan profil data mengambil sampel kardinalitas, tingkat nilai null, dan rentang nilai, kemudian menyarankan tipe yang paling sesuai dan format file yang tepat. Anggap saran tersebut sebagai draf, karena model tersebut tidak dapat memprediksi beban kerja di masa mendatang.

Copilot membuat draf pernyataan CREATE TABLE dan CREATE DATABASE dari komentar singkat, dan asisten agentic dapat mengkonversi file sampel menjadi skema. Selalu periksa skala DECIMAL dan klausa pembatas sebelum menjalankan hasilnya.

Ringkaslah postingan ini dengan: