Pendahuluan
Dalam terminologi Hive, tabel eksternal adalah tabel yang tidak dikelola dengan Hive. Tujuannya adalah untuk memfasilitasi pengimporan data dari file eksternal ke metastore.
Data tabel eksternal disimpan secara eksternal, sedangkan metastore Hive hanya berisi skema metadata. Akibatnya, menjatuhkan tabel eksternal tidak memengaruhi data.
Dalam tutorial ini, Anda akan mempelajari cara membuat, membuat kueri, dan melepaskan tabel eksternal di Hive.
Prasyarat
- Ubuntu 18.04 LTS atau lebih baru
- Akses ke baris perintah dengan hak istimewa sudo
- Apache Hadoop diinstal dan dijalankan
- Apache Hive diinstal dan dijalankan
Catatan: Tutorial ini menggunakan Ubuntu 20.04. Namun, Hive bekerja sama di semua sistem operasi. Ini berarti proses membuat, membuat kueri, dan menghapus tabel eksternal dapat diterapkan ke Hive di Windows, Mac OS, distribusi Linux lainnya, dll.
Membuat Tabel Eksternal di Hive – Penjelasan Sintaks
Saat membuat tabel eksternal di Hive, Anda perlu memberikan informasi berikut:
- Nama tabel –
create external table
perintah membuat tabel. Jika tabel dengan nama yang sama sudah ada di sistem, ini akan menyebabkan kesalahan. Untuk menghindarinya, tambahkanif not exists
ke pernyataan. Nama tabel tidak peka huruf besar/kecil. - Nama dan jenis kolom – Sama seperti nama tabel, nama kolom tidak peka huruf besar/kecil. Jenis kolom adalah nilai seperti
int
,char
,string
, dll. - Format baris – Baris menggunakan format SerDe (Serializer/Deserializer) asli atau khusus. SerDe Asli akan digunakan jika format baris tidak ditentukan, atau jika ditentukan sebagai dibatasi.
- Karakter penghentian kolom – Ini adalah
char
ketik karakter yang memisahkan nilai tabel dalam satu baris. - Format penyimpanan – Anda dapat menentukan format penyimpanan seperti file teks, file urutan, file json, dll.
- Lokasi – Ini adalah lokasi direktori HDFS dari file yang berisi data tabel.
Sintaks yang benar untuk memberikan informasi ini ke Hive adalah:
create external table if not exists [external-table-name] (
[column1-name] [column1-type], [column2-name] [column2-type], …)
comment '[comment]'
row format [format-type]
fields terminated by '[termination-character]'
stored as [storage-type]
location '[location]';
Buat Tabel Eksternal Hive – Contoh
Untuk tujuan contoh praktis, tutorial ini akan menunjukkan cara mengimpor data dari file CSV ke tabel eksternal.
Langkah 1:Siapkan File Data
1. Buat file CSV berjudul 'countries.csv':
sudo nano countries.csv
2. Untuk setiap negara dalam daftar, tuliskan nomor baris, nama negara, ibu kotanya, dan populasinya dalam jutaan:
1,USA,Washington,328
2,France,Paris,67
3,Spain,Madrid,47
4,Russia,Moscow,145
5,Indonesia,Jakarta,267
6,Nigeria,Abuja,196
3. Simpan file dan catat lokasinya.
Langkah 2:Impor File ke HDFS
1. Buat direktori HDFS. Anda akan menggunakan direktori ini sebagai lokasi HDFS dari file yang Anda buat.
hdfs dfs -mkdir [hdfs-directory-name]
2. Impor file CSV ke HDFS:
hdfs dfs -put [original-file-location] [hdfs-directory-name]
3. Gunakan -ls
perintah untuk memverifikasi bahwa file ada di folder HDFS:
hdfs dfs -ls [hdfs-directory-name]
Outputnya menampilkan semua file yang saat ini ada di direktori.
Catatan: Untuk mempelajari lebih lanjut tentang HDFS, lihat Apa itu HDFS? Panduan Sistem File Terdistribusi Hadoop.
Langkah 3:Buat Tabel Eksternal
1. Setelah Anda mengimpor file data ke HDFS, mulai Hive dan gunakan sintaks yang dijelaskan di atas untuk membuat tabel eksternal.
2. Untuk memverifikasi bahwa pembuatan tabel eksternal berhasil, ketik:
select * from [external-table-name];
Outputnya harus mencantumkan data dari file CSV yang Anda impor ke dalam tabel:
3. Jika Anda ingin membuat tabel terkelola menggunakan data dari tabel eksternal, ketik:
create table if not exists [managed-table-name](
[column1-name] [column1-type], [column2-name] [var2-name], …)
comment '[comment]';
4. Selanjutnya, impor data dari tabel eksternal:
insert overwrite table [managed-table-name] select * from [external-table-name];
5. Verifikasi bahwa data berhasil dimasukkan ke tabel terkelola.
select * from [managed-table-name];
Cara Membuat Kueri Tabel Eksternal Hive
Untuk menampilkan semua data yang disimpan dalam tabel, Anda akan menggunakan select * from
perintah diikuti dengan nama tabel. Hive menawarkan daftar perintah kueri yang luas untuk memungkinkan Anda mempersempit pencarian dan mengurutkan data sesuai dengan preferensi Anda.
Misalnya, Anda dapat menggunakan where
perintah setelah select * from
untuk menentukan kondisi:
select * from [table_name] where [condition];
Hive hanya akan menampilkan baris yang memenuhi kondisi yang diberikan dalam kueri:
Alih-alih tanda bintang karakter yang merupakan singkatan dari "semua data", Anda dapat menggunakan penentu yang lebih spesifik. Mengganti tanda bintang dengan nama kolom (seperti NamaNegara , dari contoh di atas) hanya akan menampilkan data dari kolom yang dipilih.
Berikut adalah beberapa fungsi kueri yang berguna dan sintaksnya:
Fungsi | Sintaks |
---|---|
Kueri tabel menurut beberapa kondisi | select * from [table_name] where [condition1] and [condition2]; |
Pesan data tabel | select [column1_name], [column2_name] from [table_name] order by [column_name]; |
Urutkan data tabel dalam urutan menurun | select [column1_name], [column2_name] from [table_name] order by [column_name] desc; |
Tampilkan jumlah baris | select count(*) from [table_name]; |
Cara Menjatuhkan Tabel Eksternal Hive
1. Menjatuhkan tabel eksternal di Hive dilakukan menggunakan perintah drop yang sama dengan yang digunakan untuk tabel terkelola:
drop table [table_name];
Output akan mengkonfirmasi keberhasilan operasi:
2. Menanyakan tabel yang dijatuhkan akan mengembalikan kesalahan:
Namun, data dari tabel eksternal tetap berada di sistem dan dapat diambil dengan membuat tabel eksternal lain di lokasi yang sama.