Hive ETL: JSON, XML, Metin Verisi Örneklerini Yükleme
⚡ Akıllı Özet
Hive ETL, metin, XML ve JSON dosyalarını Hive'a yükleyerek ve işleyerek sorgulanabilir tablolara dönüştürür.tracXPath() ve get_json_object() fonksiyonlarıyla değerlere erişim sağlayarak analistlere yarı yapılandırılmış Hadoop verileri üzerinde SQL arayüzü sunar.
Hive, ETL ve veri ambarı aracı olarak, aşağıdakilerin üzerinde yer almaktadır: Hadoop'un Ekosistem, veri modelleme, veri manipülasyonu, veri işleme ve veri sorgulama gibi işlevler sunar. Veri ekolütracHive'da yapılandırma, Hive'da tablolar oluşturmayı, yapılandırılmış ve yarı yapılandırılmış verileri yüklemeyi ve gereksinimlere göre verileri sorgulamayı ifade eder.
Toplu işlem için, bir betik dilinde özel map ve reduce komut dosyaları kullanarak özel tanımlanmış komut dosyaları yazacağız. Bu, bir SQL Kolay sorgulama için ortam ve destek gibi.
Hive Kullanarak Yapılandırılmış Verilerle Çalışmak
Yapılandırılmış veri, verilerin satır ve sütunlardan oluşan uygun biçimde olması anlamına gelir. Bu daha çok şuna benzer: RDBMS uygun satır ve sütunlara sahip veriler.
Burada, metin dosyalarında bulunan yapılandırılmış verileri Hive'a yükleyeceğiz.
) 1 Adım Bu adımda çalışanların Id, Name, Age, Adres, Maaş ve Departman gibi sütun adlarını veri türleri ile içeren “employees_guru” tablosunu oluşturuyoruz.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- “employees_guru” tablosunun oluşturulması
- Employees.txt dosyasındaki veriler “employees_guru” tablosuna yükleniyor.
) 2 Adım Bu adımda, "Seç" komutunu kullanarak bu tabloda saklanan içerikleri görüntülüyoruz. Tablonun içeriğini aşağıdaki ekran görüntüsünde görebiliriz.
Örnek kod parçası
Gerçekleştirilecek sorgular
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;
Hive Kullanarak Yarı Yapılandırılmış Verilerle Çalışma (XML, JSON)
Hive, Hadoop ekosisteminde ETL işlevlerini yerine getiren bir aracı görevi görür. ETL aracıBazı uygulama türlerinde MapReduce'u uygulamak zor olabilir; Hive bu karmaşıklığı azaltır ve veri ambarı sektörü açısından BT uygulamaları için en iyi çözümü sunar.
XML ve JSON gibi yarı yapılandırılmış veriler, Hive kullanılarak daha az karmaşıklıkla işlenebilir. Öncelikle Hive'ı nasıl kullanabileceğimizi göreceğiz. XML.
XML'den Hive Tablosuna
Burada XML verilerini Hive tablolarına yükleyeceğiz ve XML etiketlerinin içinde saklanan değerleri getireceğiz.
) 1 Adım "xmlsample_guru" adlı tablonun, string veri türünde bir "str" sütunu ile oluşturulması.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- “xmlsample_guru” tablosunun oluşturulması
- test.xml dosyasındaki veriler “xmlsample_guru” tablosuna yükleniyor.
) 2 Adım Kullanma XPath xpath() metodu sayesinde XML etiketlerinin içinde saklanan verilere erişebileceğiz.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- xpath() yöntemini kullanarak /emp/esal/ ve /emp/ename/ dizinlerinde saklanan değerleri alıyoruz.
- XML etiketlerinin içinde bulunan değerler. Bu adımda, "xmlsample_guru" tablosunda XML etiketlerinin altında saklanan gerçek değerleri görüntülüyoruz.
Unutmayın ki xpath() bir string dizisi döndürür; xpath_string(), xpath_int() ve xpath_double() ise tek bir türde değer döndürür.
) 3 Adım Bu adımda, "xmlsample_guru" tablosunun ham XML verilerini alıp görüntüleyeceğiz.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- Etiketlerle birlikte görüntülenen gerçek XML verileri
- Tek bir etikete baktığımızda, üst etiket olarak "emp", alt etiketler olarak da "ename" ve "esal" bulunduğunu görüyoruz.
Code pasajı:
Gerçekleştirilecek sorgular
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 (JavaKomut Dosyası Nesne Gösterimi)
Sosyal medya ve web sitesi verileri genellikle JSON formatında saklanır. Çevrimiçi sunuculardan veri çekmeye çalıştığımızda, JSON dosyaları döndürülür. Hive'ı veri deposu olarak kullanarak, şemalar oluşturarak JSON verilerini Hive tablolarına yükleyebiliriz.
JSON'dan Hive Tablosuna
Bu bölümde, JSON verilerini Hive tablolarına yükleyeceğiz ve JSON şemasında saklanan değerleri alacağız.
) 1 Adım Bu adımda, “json_guru” adında bir JSON tablosu oluşturacağız. Oluşturulduktan sonra, gerçek şemanın içeriğini yükleyip görüntüleyeceğiz.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- “json_guru” tablosunun oluşturulması
- test.json dosyasındaki veriler “json_guru” tablosuna yükleniyor.
- json_guru tablosunda saklanan JSON dosyasının gerçek şemasını görüntüleme
) 2 Adım get_json_object() yöntemini kullanarak JSON hiyerarşisinde saklanan veri değerlerini alabiliriz.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- get_json_object(str,'$.ecode') kullanarak json_guru tablosundan ecode değerlerini alabilirsiniz. Benzer şekilde, get_json_object(str,'$.ename') ve get_json_object(str,'$.sal') kullanarak da json_guru tablosundan ename ve sal değerlerini alabilirsiniz.
- json_guru'daki JSON hiyerarşisi içinde saklanan değerler
get_json_object() işlevi belgeyi her çağrıda yalnızca bir kez ayrıştırdığı için, birden fazla anahtar gerektiğinde json_tuple() daha ucuzdur ve bir JSON SerDe, yükleme sırasında belgeyi türlendirilmiş sütunlara eşler.
Code pasajı
Gerçekleştirilecek sorgular
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;
Karmaşık JSON'dan Hive Tablosuna
Bu bölümde, karmaşık JSON verilerini Hive tablolarına yükleyeceğiz ve JSON şemasında saklanan değerleri alacağız.
) 1 Adım Tek sütunlu bir alanla complexjson_guru oluşturma.
Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:
- Tek sütun alanına sahip ve veri türü string olan complexjson_guru tablosunun oluşturulması.
- emp.json karmaşık JSON dosyasından complexjson_guru'ya veri yükleniyor.
) 2 Adım `get_json_object` fonksiyonunu kullanarak JSON dosya hiyerarşisinin içinde depolanan gerçek içeriği alabiliriz.
Aşağıdaki ekran görüntüsünden complexjson_guru'da depolanan verilerin çıktısını görebiliriz.
) 3 Adım Bu adımda, "Seç" komutunu kullanarak "complexjson_guru" tablosunda saklanan karmaşık JSON verilerini görebiliyoruz.
Örnek kod parçası
Gerçekleştirilecek sorgular
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;
Gerçek Zamanlı Projelerde Hive – Ne Zaman ve Nerede Kullanılmalı?
Hadoop ekosisteminde Hive'ı ne zaman ve nerede kullanmalısınız:
Ne zaman
- Hadoop ekosisteminde güçlü ve etkili istatistiksel fonksiyonlarla çalışırken
- Yapılandırılmış ve yarı yapılandırılmış veri işleme ile çalışırken
- Hadoop ile birlikte kullanılan bir veri ambarı aracı olarak
- HBase ile gerçek zamanlı veri alımı, burada Hive kullanılabilir.
Dönüşümün
- ETL ve veri ambarı aracı olarak kullanım kolaylığı için
- SQL benzeri bir ortam sağlamak ve HiveQL kullanarak SQL gibi sorgulama yapmak.
- Müşterinin özel gereksinimlerine yönelik olarak özel olarak belirtilmiş map ve reducer komut dosyalarını kullanmak ve dağıtmak.











