Apache Pig - Mimari
Pig kullanarak Hadoop'ta verileri analiz etmek için kullanılan dil şu şekilde bilinir: Pig Latin. Veriler üzerinde çeşitli işlemleri gerçekleştirmek için zengin bir veri türü ve operatör kümesi sağlayan yüksek düzeyli bir veri işleme dilidir.
Programcıların Pig kullanarak belirli bir görevi gerçekleştirmek için, programcıların Pig Latin dilini kullanarak bir Pig betiği yazmaları ve bunları yürütme mekanizmalarından herhangi birini (Grunt Shell, UDF'ler, Gömülü) kullanarak yürütmeleri gerekir. Yürütmeden sonra, bu komut dosyaları istenen çıktıyı üretmek için Pig Framework tarafından uygulanan bir dizi dönüşümden geçecektir.
Apache Pig, dahili olarak bu komut dosyalarını bir dizi MapReduce işine dönüştürür ve böylece programcının işini kolaylaştırır. Apache Pig'in mimarisi aşağıda gösterilmiştir.
Apache Pig Bileşenleri
Şekilde gösterildiği gibi, Apache Pig çerçevesinde çeşitli bileşenler bulunmaktadır. Ana bileşenlere bir göz atalım.
Ayrıştırıcı
Başlangıçta Pig Komut Dosyaları, Ayrıştırıcı tarafından işlenir. Komut dizisinin sözdizimini kontrol eder, tip kontrolü ve diğer çeşitli kontroller yapar. Ayrıştırıcının çıktısı, Pig Latin ifadelerini ve mantıksal işleçleri temsil eden bir DAG (döngüsel olmayan grafik) olacaktır.
DAG'de, komut dosyasının mantıksal operatörleri düğümler olarak temsil edilir ve veri akışları kenarlar olarak temsil edilir.
Optimizer
Mantıksal plan (DAG), projeksiyon ve aşağı itme gibi mantıksal optimizasyonları gerçekleştiren mantıksal optimize ediciye aktarılır.
Derleyici
Derleyici, optimize edilmiş mantıksal planı bir dizi MapReduce görevi halinde derler.
Yürütme motoru
Son olarak, MapReduce işleri sıralı bir sırada Hadoop'a gönderilir. Son olarak, bu MapReduce işleri istenen sonuçları verecek şekilde Hadoop'ta yürütülür.
Domuz Latin Veri Modeli
Pig Latin veri modeli tamamen yuvalanmıştır ve aşağıdaki gibi karmaşık atomik olmayan veri türlerine izin verir. map ve tuple. Aşağıda, Pig Latin'in veri modelinin şematik temsilidir.
Atom
Pig Latince'deki herhangi bir tek değer, verilerinden bağımsız olarak, tür olarak bilinir Atom. String olarak saklanır ve string ve sayı olarak kullanılabilir. int, long, float, double, chararray ve bytearray Pig'in atomik değerleridir. Bir veri parçası veya basit bir atomik değer,field.
Example - 'raja' veya '30'
Tuple
Sıralı bir alan kümesi tarafından oluşturulan bir kayıt, bir demet olarak bilinir, alanlar herhangi bir türde olabilir. Bir demet, RDBMS tablosundaki bir satıra benzer.
Example - (Raja, 30)
Sırt çantası
Çanta, sıralanmamış bir demet kümesidir. Başka bir deyişle, bir grup (benzersiz olmayan) bir çanta olarak bilinir. Her demet herhangi bir sayıda alana sahip olabilir (esnek şema). Çanta, '{}' ile temsil edilir. RDBMS'deki bir tabloya benzer, ancak RDBMS'deki bir tablodan farklı olarak, her dizinin aynı sayıda alanı içermesi veya aynı konumdaki (sütun) alanların aynı türe sahip olması gerekli değildir.
Example - {(Raja, 30), (Muhammed, 45)}
Çanta, ilişkideki bir alan olabilir; bu bağlamda olarak bilinirinner bag.
Example - {Raja, yaş 30, {9848022338, [email protected],}}
Harita
Bir harita (veya veri haritası), bir dizi anahtar-değer çiftidir. keychararray türünde olması ve benzersiz olması gerekir. valueherhangi bir türde olabilir. "[]" İle temsil edilir
Example - [isim # Raja, 30 yaşında]
İlişki
Bir ilişki bir demet torbasıdır. Domuz Latince'deki ilişkiler sırasızdır (tupleların belirli bir sırada işleneceğine dair bir garanti yoktur).