Membuat Tabel di Hive: Internal, Mengubah & Menghapus dengan Contoh
⚡ Ringkasan Cerdas
Membuat, mengubah, dan menjatuhkanping Tabel di Apache Hive menggunakan DDL bergaya SQL yang sudah dikenal, tetapi hasilnya bergantung pada apakah tabel tersebut internal, yang dimiliki oleh Hive, atau eksternal, yang hanya mendeskripsikan file.

Operasi tabel seperti pembuatan, pengubahan, dan penghapusan.ping Cara kerja tabel di Hive dapat diamati dalam panduan ini. Setiap operasi pertama-tama ditunjukkan sebagai sesi langsung, kemudian sebagai pernyataan yang dapat digunakan kembali.
Cara Membuat, Mengubah, dan Menghapus Tabel di Hive
Pada gambar di bawah, kita membuat tabel dengan kolom dan mengubah nama tabel.
- Membuat tabel guru_sample dengan dua nama kolom seperti “empid” dan “empname”
- Menampilkan tabel yang ada di database guru99
- guru_sample ditampilkan di bawah tabel
- Mengubah tabel “guru_sample” menjadi “guru_sampleNew”
- Sekali lagi, saat Anda menjalankan perintah “show”, maka akan ditampilkan nama baru guru_sampleNew.
Sesi di bawah ini menjalankan kelima langkah tersebut secara berurutan pada sarang lebah> perintah tersebut, dan dua panggilan SHOW TABLES sebelum dan sesudah penggantian nama membuat efeknya terlihat.
Menjatuhkanping tabel guru_sampleBaru:
Satu pernyataan DROP TABLE akan menghapus tabel yang telah diganti namanya, dan Hive akan menjawab dengan OK.
Sintaks dan Klausa Umum Perintah CREATE TABLE di Hive
Contoh di atas menggunakan bentuk sesingkat mungkin. Pernyataan yang didokumentasikan menerima beberapa klausa opsional, dan masing-masing menentukan sesuatu yang dibiarkan pada nilai default oleh contoh tersebut.
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type, ...)] [CLUSTERED BY (col_name, ...) INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)];
| Ayat | Apa yang dikendalikannya |
|---|---|
| LUAR | Membuat tabel eksternal, sehingga perintah DROP membiarkan file data tetap berada di tempatnya. |
| SEMENTARA | Membuat tabel lingkup sesi yang akan hilang saat sesi berakhir. |
| JIKA TIDAK ADA | Menekan kesalahan jika tabel dengan nama tersebut sudah ada. |
| DIPISAHKAN OLEH | Membagi tabel menjadi satu direktori per nilai kunci. |
| DIKUMPULKAN OLEH … KE DALAM n EMBER | Menghash baris ke dalam sejumlah file tetap. |
| FORMAT BARIS / DISIMPAN SEBAGAI | Menetapkan pembatas atau SerDe dan format file, seperti TEXTFILE, ORC atau Parquet. |
| LOKASI | Mengarahkan tabel ke jalur HDFS tertentu, bukan ke jalur default gudang data. |
| TBLPROPERTIES | Melampirkan pasangan kunci-nilai metadata, termasuk external.table.purge |
Bentuk terkait, BUAT TABEL tabel_baru SEPERTI tabel_yang_ada, menyalin skema tanpa menyalin baris apa pun. Klausa struktural seperti PARTITIONED BY dan CLUSTERED BY dibahas secara detail dalam panduan untuk Partisi dan bucket Hive.
Jenis Tabel dan Penggunaannya
Beralih ke tabel, caranya sama seperti yang kita buat di basis data relasional tradisional. Fungsionalitas seperti pemfilteran dan penggabungan (join) dapat dilakukan pada tabel.
Hive menangani dua jenis struktur tabel, tabel Internal dan Eksternal, tergantung pada pemuatan dan desain skema di dalamnya. Sarang lebahPilihan ini bukan sekadar kosmetik: pilihan ini menentukan siapa yang memiliki file data dan apa yang terjadi pada file tersebut ketika tabel dihapus.
Tabel Internal di Hive
- Tabel internal pada dasarnya memiliki keterkaitan yang erat. Pada jenis tabel ini, pertama-tama kita harus membuat tabel dan memuat data.
- Kita bisa menyebut ini sebagai data pada skema.
- Dengan tetesping Tabel ini, baik data maupun skemanya, akan dihapus.
- Lokasi penyimpanan tabel ini akan berada di /user/hive/warehouse.
- Tabel internal juga disebut tabel terkelola, dan hanya tabel inilah yang mendukung transaksi TRUNCATE, ARCHIVE, MERGE, CONCATENATE, dan ACID.
Kapan Memilih Tabel Internal?
- Jika data pemrosesan tersedia di sistem file lokal
- Jika kita ingin Hive mengelola seluruh siklus hidup data termasuk penghapusannya
Cuplikan kode contoh untuk Tabel Internal
- Untuk membuat tabel internal
Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING); Row format delimited Fields terminated by '\t';
- Muat data ke dalam tabel internal
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
- Menampilkan isi tabel
Hive>select * from guruhive_internaltable;
- Untuk menjatuhkan tabel internal
Hive>DROP TABLE guruhive_internaltable;
Jika Anda menghapus guruhive_internaltable, termasuk metadata dan datanya, maka semuanya akan dihapus dari Hive. Kecuali jika PURGE ditentukan, file-file tersebut akan dipindahkan ke folder sampah HDFS dan tidak langsung dihapus.
Dari tangkapan layar berikut, kita dapat mengamati keluaran dari keempat pernyataan dalam satu sesi, yang diakhiri dengan penghapusan yang berhasil.
Pada kode di atas dan dari tangkapan layar, kita melakukan hal-hal berikut:
- Buat tabel internal
- Muat data ke dalam tabel internal
- Menampilkan isi tabel
- Untuk menjatuhkan tabel internal
Tabel Eksternal di Hive
- Tabel eksternal bersifat terhubung secara longgar. Data akan tersedia di HDFS. Tabel akan dibuat berdasarkan data HDFS.
- Dengan kata lain, kita bisa mengatakan bahwa ini adalah proses pembuatan skema pada data.
- Pada saat jatuhping Yang dihapus hanyalah skema tabel, data akan tetap tersedia di HDFS seperti sebelumnya.
- Tabel eksternal memberikan opsi untuk membuat beberapa skema untuk data yang disimpan di HDFS alih-alih menghapus data setiap kali skema diperbarui
- Mulai dari Hive 4.0.0, mengatur properti tabel external.table.purge ke true membuat perintah DROP juga menghapus data.
Kapan Memilih Tabel Eksternal?
- Jika data pemrosesan tersedia di HDFS
- Berguna ketika file digunakan di luar Hive
Cuplikan kode contoh untuk Tabel Eksternal
- Buat tabel eksternal
Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING) Row format delimited Fields terminated by '\t' LOCATION '/user/guru99hive/guruhive_external';
- Jika kita tidak menentukan lokasi pada saat pembuatan tabel, kita dapat memuat data secara manual.
Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;
- Menampilkan isi tabel
Hive>select * from guruhive_external;
- Untuk menghapus tabel eksternal
Hive>DROP TABLE guruhive_external;
Dari tangkapan layar berikut, kita dapat mengamati hasilnya. Perhatikan bahwa perintah drop di akhir hanya menghapus skema saja – file di bawah jalur LOCATION tidak tersentuh.
Dalam kode di atas, kita melakukan hal-hal berikut:
- Buat tabel Eksternal
- Muat data ke dalam tabel Eksternal
- Menampilkan isi tabel
- Menjatuhkanping tabel eksternal
Perbedaan antara Tabel Internal dan Eksternal
| Fitur | Intern | Luar |
|---|---|---|
| Skema | Data tentang Skema | Skema Data |
| Lokasi penyimpanan | /pengguna/hive/gudang | Lokasi HDFS diberikan oleh LOCATION |
| Ketersediaan data | Dalam sistem file lokal | Dalam HDFS |
| Efek DROP | Menghapus skema dan data | Menghapus skema saja, kecuali jika external.table.purge bernilai true. |
| POTONG dukungan | Didukung | Tidak didukung |
| Transaksi ACID | Didukung | Tidak didukung |
The Dokumentasi Apache Hive Aturan tersebut dinyatakan dengan jelas: Hive menganggap bahwa mereka memiliki data untuk tabel yang dikelola dan menganggap bahwa mereka tidak memilikinya untuk tabel eksternal, dan setiap perbedaan di atas berasal dari asumsi tunggal tersebut.
Referensi Perintah ALTER TABLE dan DROP TABLE
Screenshot di atas hanya menunjukkan perintah ganti nama dan hapus. Ini adalah perintah yang paling sering digunakan oleh praktisi pada tabel yang sudah ada.
| Pernyataan | Tujuan |
|---|---|
| ALTER TABLE table_name RENAME TO new_name; | Mengubah nama tabel; untuk tabel yang dikelola, ini juga memindahkan direktori HDFS-nya. |
| ALTER TABLE table_name ADD COLUMNS (col_name data_type); | Menambahkan satu atau lebih kolom ke akhir skema. |
| ALTER TABLE table_name CHANGE COLUMN old_name new_name data_type; | Mengganti nama kolom atau mengubah tipenya. |
| ALTER TABLE table_name REPLACE COLUMNS (…); | Mengganti seluruh daftar kolom dengan yang baru. |
| ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE'); | Mengonversi tabel terkelola menjadi tabel eksternal, dan FALSE mengembalikannya. |
| HAPUS TABEL [JIKA ADA] nama_tabel [BERSIHKAN]; | Menghapus tabel; PURGE melewati folder sampah sehingga data tidak dapat dipulihkan. |
| TRUNCATE [TABLE] table_name; | Menghapus semua baris tetapi mempertahankan skema; hanya untuk tabel yang dikelola. |
Dua pengamanan penting perlu disertakan dalam skrip apa pun. IF EXISTS mencegah penghapusan gagal pada tabel yang sudah dihapus, dan DESCRIBE FORMATTED memastikan apakah targetnya adalah MANAGED_TABLE atau EXTERNAL_TABLE sebelum penghapusan dijalankan.




