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.

  • 🧱 BUAT TABEL: Satu pernyataan mendefinisikan kolom, format baris, dan, secara opsional, lokasi penyimpanan tabel Hive.
  • ️ MENGUBAH TABEL: RENAME mengubah nama tabel, dan ADD COLUMNS atau CHANGE COLUMN mengedit skema tanpa memuat ulang data.
  • ️ HAPUS MEJA: Menjatuhkanping penghapusan tabel internal menghapus skema dan data sekaligus, sedangkan penghapusan data secara manualping Tabel eksternal hanya menghapus metadata.
  • 🔒 Internal dimiliki oleh: Tabel internal atau tabel yang dikelola berada di bawah direktori gudang data dan Hive mengontrol seluruh siklus hidupnya.
  • 🔗 Referensi eksternal digunakan: Tabel eksternal menunjuk ke file yang juga dibaca oleh alat lain, sehingga file-file tersebut tetap ada meskipun terjadi penghapusan.
  • 🔎 Verifikasi tipenya: DESCRIBE FORMATTED melaporkan MANAGED_TABLE atau EXTERNAL_TABLE, yang menghilangkan segala tebakan sebelum penghapusan.

Perintah Hive untuk membuat, mengubah, dan menghapus tabel beserta contohnya.

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.

  1. Membuat tabel guru_sample dengan dua nama kolom seperti “empid” dan “empname”
  2. Menampilkan tabel yang ada di database guru99
  3. guru_sample ditampilkan di bawah tabel
  4. Mengubah tabel “guru_sample” menjadi “guru_sampleNew”
  5. 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.

Sesi Hive membuat guru_sample dan mengganti namanya menjadi guru_sampleNew

Menjatuhkanping tabel guru_sampleBaru:

Satu pernyataan DROP TABLE akan menghapus tabel yang telah diganti namanya, dan Hive akan menjawab dengan OK.

Jatuhan cangkang sarang lebahping tabel guru_sampleNew dengan respons 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

  1. Untuk membuat tabel internal
     Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
    	 Row format delimited 
    	 Fields terminated by '\t';
  2. Muat data ke dalam tabel internal
        Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;
  3. Menampilkan isi tabel
        Hive>select * from guruhive_internaltable;
  4. 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.

Membuat, memuat, menanyakan, dan menghapus sesi Hive.ping tabel internal guruhive

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

  1. 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';
  2. 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;
  3. Menampilkan isi tabel
      Hive>select * from guruhive_external;
  4. 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.

Membuat, memuat, menanyakan, dan menghapus sesi Hive.ping guruhive_eksternal

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.

Pertanyaan Umum Demo Slot

Jalankan DESCRIBE FORMATTED table_name. Baris Tipe Tabel akan melaporkan MANAGED_TABLE atau EXTERNAL_TABLE. Memeriksa sebelum melakukan penghapusan adalah cara termurah untuk menghindari penghapusan data yang masih dibaca oleh pekerjaan lain.

Ya. Perintah ALTER TABLE table_name SET TBLPROPERTIES ('EXTERNAL'='TRUE') mengubah tipe data di metastore, dan FALSE mengembalikannya ke tipe semula. File data tetap berada di tempatnya, jadi tidak perlu melakukan reload.

Biasanya tidak, hanya entri metastore yang dihapus. Namun, mulai dari Hive 4.0.0, tabel eksternal yang memiliki properti external.table.purge yang diatur ke true, datanya juga akan dihapus oleh perintah DROP, jadi periksa propertinya terlebih dahulu.

Perintah CREATE TABLE biasa sekarang secara default menghasilkan tabel ORC transaksional yang dikelola, bukan tabel teks sederhana. Penambahan kata kunci EXTERNAL inilah yang mempertahankan perilaku lama yang bukan ACID pada klaster Hive 3.

TRUNCATE menghapus semua baris tetapi mempertahankan skema, dan hanya berfungsi pada tabel yang dikelola. DROP juga menghapus skema. TRUNCATE adalah pilihan yang lebih aman ketika definisi tabel harus tetap ada setelah pemuatan ulang.

Tidak. Hive mengubah pengidentifikasi menjadi huruf kecil di metastore, jadi GURU_SAMPLE dan guru_sample merujuk ke tabel yang sama. Nilai string di dalam data tetap peka terhadap huruf besar dan kecil, itulah sebabnya perbandingan WHERE masih dapat melewatkan beberapa baris.

Ya. Fitur pembelajaran mesin dalam alat katalog memprofilkan kardinalitas kolom, tingkat null, dan pola kueri, kemudian menyarankan tipe data, format file, dan kunci partisi. Anggap output tersebut sebagai draf, karena model tidak dapat melihat beban kerja yang direncanakan.

Copilot menyelesaikan pernyataan CREATE, ALTER, dan DROP dari komentar singkat, dan asisten agen dapat menghasilkan seluruh skrip migrasi. RevPerhatikan kata kunci EXTERNAL dan opsi PURGE apa pun, karena tebakan yang salah di sana akan menghapus data yang sebenarnya.

Ringkaslah postingan ini dengan: