Hive ETL: Memuat JSON, XML, Contoh Data Teks

⚡ Ringkasan Cerdas

Hive ETL mengubah file teks, XML, dan JSON menjadi tabel yang dapat dikueri dengan memuatnya ke dalam Hive dan mengekstraknya.tracMengolah nilai dengan xpath() dan get_json_object(), memberikan analis antarmuka SQL atas data Hadoop semi-terstruktur.

  • 🧱 Beban terstruktur: Berkas teks yang dipisahkan oleh pembatas akan menjadi tabel dengan perintah ROW FORMAT DELIMITED ditambah FIELDS TERMINATED BY, kemudian LOAD DATA LOCAL INPATH.
  • XML contohtraction: Satu kolom STRING menyimpan setiap dokumen XML, dan xpath() mengambil nilai dari tag bernama tersebut.
  • 🔑 JSON contohtraction: Fungsi get_json_object() membaca satu ekspresi JSONPath per panggilan, jadi setiap field membutuhkan panggilannya sendiri.
  • 🪜 Muatan bertingkat: JSON yang kompleks dimuat dengan cara yang sama persis, dan hierarkinya ditelusuri dengan ekspresi JSONPath bertitik.
  • 📍 Aturan jalur: Kata kunci LOCAL membaca dari sistem file Linux, sedangkan jika dihilangkan, jalur tersebut akan diselesaikan pada HDFS.
  • 🎯 Cocok untuk: Hive lebih cocok untuk penyimpanan data batch dan ETL semi-terstruktur daripada pencarian data dengan latensi rendah.

Hive ETL: Memuat Data JSON, XML, dan Teks

Hive sebagai alat ETL dan gudang data di atas Hadoop Ekosistem menyediakan fungsionalitas seperti pemodelan data, manipulasi data, pemrosesan data, dan kueri data. Data extracDalam Hive, "pengolahan" berarti pembuatan tabel di Hive dan pemuatan data terstruktur dan semi-terstruktur serta kueri data berdasarkan kebutuhan.

Untuk pemrosesan batch, kita akan menulis skrip yang ditentukan sendiri menggunakan skrip map dan reduce khusus dalam bahasa skrip. Ini menyediakan SQL seperti lingkungan dan dukungan untuk pertanyaan yang mudah.

Bekerja dengan Data Terstruktur menggunakan Hive

Data terstruktur berarti data tersebut berada dalam format baris dan kolom yang tepat. Ini lebih seperti RDBMS data dengan baris dan kolom yang tepat.

Di sini kita akan memuat data terstruktur yang terdapat dalam file teks ke dalam Hive.

Langkah 1) Pada langkah ini kita membuat tabel “employees_guru” dengan nama kolom seperti Id, Nama, Umur, Alamat, Gaji dan Departemen karyawan dengan tipe datanya.

Membuat tabel employees_guru dan memuat Employees.txt di Hive.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Pembuatan tabel “employees_guru”
  2. Memuat data dari Employees.txt ke dalam tabel “employees_guru”

Langkah 2) Pada langkah ini, kita menampilkan isi yang tersimpan dalam tabel ini dengan menggunakan perintah “Select”. Kita dapat mengamati isi tabel pada tangkapan layar berikut.

Pilih output kueri yang menampilkan baris tabel Hive employees_guru

Cuplikan kode contoh

Kueri yang harus dilakukan

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Bekerja dengan Data Semi-terstruktur menggunakan Hive (XML, JSON)

Hive menjalankan fungsi ETL dalam ekosistem Hadoop dengan bertindak sebagai alat ETLMenerapkan MapReduce pada beberapa jenis aplikasi bisa jadi sulit; Hive dapat mengurangi kerumitan tersebut dan memberikan solusi terbaik untuk aplikasi TI di sektor data warehousing.

Data semi-terstruktur seperti XML dan JSON dapat diproses dengan lebih sederhana menggunakan Hive. Pertama, kita akan melihat bagaimana kita dapat menggunakan Hive untuk... XML.

Konversi XML ke Tabel Hive

Dalam hal ini, kita akan memuat data XML ke dalam tabel Hive, dan kita akan mengambil nilai yang disimpan di dalam tag XML.

Langkah 1) Pembuatan tabel “xmlsample_guru” dengan kolom str bertipe data string.

Membuat tabel xmlsample_guru dan memuat test.xml ke dalam Hive.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Pembuatan tabel “xmlsample_guru”
  2. Memuat data dari test.xml ke dalam tabel “xmlsample_guru”

Langkah 2) Menggunakan XPath Dengan menggunakan metode xpath(), kita dapat mengambil data yang tersimpan di dalam tag XML.

Kueri xpath() mengembalikan nilai ename dan esal dari kolom XML.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Dengan menggunakan metode xpath(), kita mengambil nilai yang tersimpan di bawah /emp/esal/ dan /emp/ename/.
  2. Nilai yang terdapat di dalam tag XML. Pada langkah ini, kita menampilkan nilai aktual yang tersimpan di dalam tag XML pada tabel “xmlsample_guru”.

Perhatikan bahwa xpath() mengembalikan array string; xpath_string(), xpath_int() dan xpath_double() mengembalikan nilai bertipe tunggal.

Langkah 3) Pada langkah ini, kita akan mengambil dan menampilkan XML mentah dari tabel “xmlsample_guru”.

Dokumen XML mentah disimpan dalam kolom str dari xmlsample_guru.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  • Data XML aktual ditampilkan dengan tag
  • Jika kita mengamati satu tag saja, tag induknya adalah “emp”, sedangkan tag anaknya adalah “ename” dan “esal”.

Code potongan:

Kueri yang harus dilakukan

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

json (JavaNotasi Objek Skrip)

Data media sosial dan situs web umumnya disimpan dalam format JSON. Setiap kali kita mencoba mengambil data dari server online, data yang dikembalikan akan berupa file JSON. Dengan menggunakan Hive sebagai penyimpanan data, kita dapat memuat data JSON ke dalam tabel Hive dengan membuat skema.

Konversi JSON ke Tabel Hive

Dalam hal ini, kita akan memuat data JSON ke dalam tabel Hive, dan kita akan mengambil nilai-nilai yang tersimpan dalam skema JSON.

Langkah 1) Pada langkah ini, kita akan membuat tabel JSON bernama “json_guru”. Setelah dibuat, kita akan memuat dan menampilkan isi skema yang sebenarnya.

Membuat json_guru, memuat test.json, dan menampilkan skema JSON.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Pembuatan tabel “json_guru”
  2. Memuat data dari test.json ke dalam tabel “json_guru”
  3. Menampilkan skema sebenarnya dari file JSON yang tersimpan di tabel json_guru.

Langkah 2) Dengan menggunakan metode get_json_object(), kita dapat mengambil nilai data yang tersimpan dalam hierarki JSON.

Output dari get_json_object() adalah daftar ecode, ename, dan salary dari json_guru.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Dengan menggunakan get_json_object(str,'$.ecode'), nilai ecode dapat diambil dari tabel json_guru. Demikian pula, dengan menggunakan get_json_object(str,'$.ename') dan get_json_object(str,'$.sal'), nilai ename dan sal dapat diambil dari tabel json_guru.
  2. Nilai yang tersimpan di dalam hierarki JSON di json_guru

Karena get_json_object() mengurai dokumen sekali per panggilan, json_tuple() lebih murah ketika beberapa kunci dibutuhkan, dan JSON SerDe memetakan dokumen ke kolom bertipe pada saat pemuatan.

Code potongan

Kueri yang harus dilakukan

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json_guru;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

Konversi JSON kompleks ke Tabel Hive

Dalam hal ini, kita akan memuat data JSON yang kompleks ke dalam tabel Hive, dan kita akan mengambil nilai-nilai yang tersimpan dalam skema JSON.

Langkah 1) Membuat complexjson_guru dengan field kolom tunggal.

Membuat complexjson_guru dan memuat emp.json ke dalam tabel Hive.

Dari tangkapan layar di atas, kita dapat mengamati hal-hal berikut:

  1. Pembuatan tabel complexjson_guru dengan satu kolom bertipe data string.
  2. Memuat data ke dalam complexjson_guru dari file JSON kompleks emp.json

Langkah 2) Dengan menggunakan get_json_object, kita dapat mengambil konten sebenarnya yang tersimpan di dalam hierarki file JSON.

Dari tangkapan layar berikut, kita dapat melihat output data yang tersimpan di complexjson_guru.

Extracted ecode dan nilai kunci bersarang dari dokumen JSON yang kompleks

Langkah 3) Pada langkah ini, dengan menggunakan perintah “Select”, kita dapat melihat data JSON kompleks yang tersimpan di dalam tabel “complexjson_guru”.

Pilih output yang menampilkan baris JSON kompleks mentah di complexjson_guru

Cuplikan kode contoh

Kueri yang harus dilakukan

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive dalam Proyek Real-time – Kapan dan Di Mana Menggunakannya

Kapan dan di mana menggunakan Hive dalam ekosistem Hadoop:

Ketika

  • Saat bekerja dengan fungsi statistik yang kuat dan andal di ekosistem Hadoop.
  • Saat bekerja dengan pemrosesan data terstruktur dan semi-terstruktur
  • Sebagai alat gudang data dengan Hadoop
  • Pengambilan data secara real-time dengan HBase, di mana Hive dapat digunakan.

Where

  • Untuk kemudahan penggunaan sebagai alat ETL dan gudang data.
  • Untuk menyediakan lingkungan tipe SQL dan melakukan kueri seperti SQL menggunakan HiveQL.
  • Untuk menggunakan dan menerapkan skrip map dan reducer khusus yang ditentukan untuk kebutuhan klien tertentu.

Pertanyaan Umum Demo Slot

LOCAL menyalin file dari sistem file mesin klien. Tanpa LOCAL, Hive memperlakukan jalur tersebut sebagai HDFS dan memindahkan file, sehingga jalur relatif akan mengarah ke direktori home HDFS pengguna.

Fungsi `json_tuple()` biasanya lebih cepat: fungsi ini mengurai dokumen sekali dan mengembalikan beberapa kunci sekaligus, sedangkan `get_json_object()` mengurai ulang string untuk setiap field. Gunakan `get_json_object()` untuk nilai tunggal.

Tidak. Kolom STRING tunggal ditambah fungsi JSON sudah cukup. SerDe seperti org.apache.hive.hcatalog.data.JsonSerDe cocok untuk kueri produksi berulang, mapping Kunci akan ditambahkan ke kolom yang diketik sekali saja, bukan setiap kali dibaca.

Biasanya berupa file yang dicetak dengan rapi: Hive mengharapkan satu dokumen JSON lengkap per baris, sehingga dokumen yang terbagi di beberapa baris akan menjadi baris yang tidak valid. Kesalahan penulisan kunci atau kesalahan huruf besar/kecil pada JSONPath juga akan menghasilkan efek yang sama.

Fungsi xpath() selalu mengembalikan array string. Gunakan varian bertipe sebagai gantinya: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() atau xpath_boolean(). Masing-masing mengembalikan satu nilai skalar dari tipe tersebut.

Penyimpanan eksternal lebih aman untuk data pendaratan mentah, karena terjadi penurunanping Tabel tersebut membiarkan file tetap di tempatnya. Tabel terkelola menghapus direktori datanya saat DROP — nyaman untuk tabel sementara, tetapi merusak untuk file bersama.

Alat pembelajaran mesin memprofilkan file sampel untuk menyimpulkan tipe, menandai kunci yang jarang digunakan, dan mengusulkan kolom partisi dari pola kueri. Anggap output sebagai draf — tipe dan partisi masih perlu diperiksa terhadap volume sebenarnya.

Program ini membuat draf pernyataan CREATE TABLE, perintah LOAD DATA, dan ekspresi JSONPath dari contoh data yang ditempelkan ke editor. Program ini tidak dapat melihat cluster, jadi nama, jalur, dan ejaan kunci perlu diverifikasi terlebih dahulu.

Ringkaslah postingan ini dengan: