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.

  • 🧱 Yapısal yükler: Sınırlandırılmış bir metin dosyası, ROW FORMAT DELIMITED ve FIELDS TERMINATED BY komutları kullanılarak bir tabloya dönüştürülür, ardından LOAD DATA LOCAL INPATH komutu kullanılır.
  • ???? ️ XML örneğitraction: Her XML belgesi tek bir STRING sütununda saklanır ve xpath() işlevi, adlandırılmış etiketlerden değerleri çeker.
  • 🔑 JSON örneğitraction: get_json_object() fonksiyonu her çağrıda yalnızca bir JSONPath ifadesi okur, bu nedenle her alan için ayrı bir çağrı gereklidir.
  • 🪜 İç içe geçmiş yükler: Karmaşık JSON verileri de tamamen aynı şekilde yüklenir ve hiyerarşi, noktalı JSONPath ifadeleriyle izlenir.
  • 📍 Yol kuralları: LOCAL anahtar kelimesi Linux dosya sisteminden okuma yaparken, bu kelime kullanılmadığında HDFS üzerindeki yol çözümlenir.
  • 🎯 Uygun olduğu yerler: Hive, düşük gecikmeli kayıt aramalarından ziyade, toplu veri ambarı ve yarı yapılandırılmış ETL işlemlerine daha uygundur.

Hive ETL: JSON, XML ve Metin Verilerinin Yüklenmesi

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.

Hive'da employees_guru tablosunu oluşturma ve Employees.txt dosyasını yükleme

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. “employees_guru” tablosunun oluşturulması
  2. 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.

employees_guru Hive tablosundaki satırları gösteren sorgu çıktısını seçin.

Ö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ı.

xmlsample_guru tablosunu oluşturma ve test.xml dosyasını Hive'a yükleme

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. “xmlsample_guru” tablosunun oluşturulması
  2. 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.

xpath() sorgusu, XML sütunundan ename ve esal değerlerini döndürüyor.

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. xpath() yöntemini kullanarak /emp/esal/ ve /emp/ename/ dizinlerinde saklanan değerleri alıyoruz.
  2. 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.

xmlsample_guru tablosunun str sütununda saklanan ham XML belgeleri

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.

json_guru'yu oluşturma, test.json dosyasını yükleme ve JSON şemasını görüntüleme

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. “json_guru” tablosunun oluşturulması
  2. test.json dosyasındaki veriler “json_guru” tablosuna yükleniyor.
  3. 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.

get_json_object() çıktısı, json_guru'dan ecode, ename ve salary bilgilerini listeliyor.

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. 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.
  2. 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.

complexjson_guru'yu oluşturma ve emp.json dosyasını Hive tablosuna yükleme

Yukarıdaki ekran görüntüsünden şunları gözlemleyebiliriz:

  1. Tek sütun alanına sahip ve veri türü string olan complexjson_guru tablosunun oluşturulması.
  2. 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.

ExtracKarmaşık JSON belgesinden kod ve iç içe geçmiş anahtar değerleri.

) 3 Adım Bu adımda, "Seç" komutunu kullanarak "complexjson_guru" tablosunda saklanan karmaşık JSON verilerini görebiliyoruz.

complexjson_guru'da ham karmaşık JSON satırlarını gösteren çıktıyı seçin.

Ö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.

SSS

LOCAL seçeneği, dosyayı istemci makinenin dosya sisteminden kopyalar. LOCAL seçeneği kullanılmadığında, Hive yolu HDFS olarak ele alır ve dosyayı taşır; bu nedenle göreceli bir yol, kullanıcının HDFS ana dizinine çözümlenir.

`json_tuple()` genellikle daha hızlıdır: belgeyi bir kez ayrıştırır ve birden fazla anahtarı birlikte döndürürken, `get_json_object()` her alan için dizeyi yeniden ayrıştırır. Tek bir değer için `get_json_object()` kullanın.

Hayır. Tek bir STRING sütunu ve JSON fonksiyonları yeterlidir. org.apache.hive.hcatalog.data.JsonSerDe gibi bir SerDe, tekrarlanan üretim sorguları ve eşleme işlemleri için uygundur.ping Tuşlar, her okuma işleminde değil, yalnızca bir kez girilen sütunlara kaydedilir.

Genellikle düzgün biçimlendirilmiş bir dosya: Hive, her satırda bir tam JSON belgesi bekler, bu nedenle satırlara bölünmüş bir belge geçersiz satırlar haline gelir. JSONPath'te yanlış yazılmış bir anahtar veya yanlış büyük/küçük harf kullanımı da aynı sonucu doğurur.

`xpath()` her zaman bir string dizisi döndürür. Bunun yerine tür belirtilmiş bir varyant kullanın: `xpath_string()`, `xpath_int()`, `xpath_long()`, `xpath_float()`, `xpath_double()` veya `xpath_boolean()`. Her biri o türden bir skalar değer döndürür.

Ham iniş verileri için harici bağlantı daha güvenlidir, çünkü düşme riski vardır.ping Tablo, dosyaları yerinde bırakır. Yönetilen bir tablo, DROP komutuyla veri dizinini siler; bu, geçici tablolar için uygun, paylaşılan dosyalar için ise yıkıcıdır.

Makine öğrenimi araçları, örnek dosyaları profilleyerek türleri çıkarır, seyrek anahtarları işaretler ve sorgu kalıplarından bölüm sütunları önerir. Çıktıyı bir taslak olarak değerlendirin; türler ve bölümler gerçek hacimlerle karşılaştırılmalıdır.

Bu program, düzenleyiciye yapıştırılan örnek bir kayıttan CREATE TABLE ifadeleri, LOAD DATA komutları ve JSONPath ifadeleri taslaklarını oluşturur. Küme yapısını göremediği için öncelikle adların, yolların ve anahtar yazımlarının doğrulanması gerekir.

Bu yazıyı şu şekilde özetleyin: