Apache Pig ile Hadoop Üzerinde Veri Analizi

pig-on-elephant

Apache Pig, Hadoop üzerindeki verileri işlemek için Yahoo firması tarafından geliştirilmiş, “Pig Latin” olarak adlandırılan kolay bir dile sahip, açık kaynaklı bir projedir.

MapReduce ile yapmak istediğimiz analizleri Pig ile daha kısa ve daha kolay şekilde yapabiliyoruz.

Pig Latin ile farklı formatta verileri yükleyip, bu veriler üzerinde filtreleme, sıralama, grouplama, aritmetik işlemler ve en önemlisi join’ler yapabiliyorsunuz. Yani SQL ile yapabildiğiniz neredeyse herşeyi Pig ile yapabilmeniz mümkün.

Bu yazımızda ilkönce Pig’in kurulumuyla başlayıp genel olarak nasıl çalıştığını anlatan ufak bir örnek yapacağız.

//* Pig kurulumuna geçmeden önce sitemizdeki Hadoop Kurulumuna bakmanızı öneriyorum.

Pig’i kurmak için öncelikle Apache’nin sitesinden Pig’in en güncel versiyonunu indirip Hadoop’un kurulu olduğu dizine atıyoruz. (Benim makinemde hadoop /usr dizini içerisine kurulu)

cd /usr
gzip -dc pig-0.12.0.tar.gz | tar xf -
ln -s /usr/pig-0.12.0 pig

Pig’in komutlarına her yerden erişebilmek için JDK dizinimizde bulunan “.bashrc” dosyamızdaki $PATH değişkenine ekleme yapmamız gerekiyor.

.bashrc dosyamızı açmak için konsola aşağıdaki komutları giriyoruz.

$JAVA_HOME
gedit ~/.bashrc

Açılan dosyamıza aşağıdaki satırları ekliyoruz.

export PIG_HOME=/usr/java/pig
PATH=$PATH:$PIG_HOME/bin

Buraya kadar Pig’in kurulumunu başarıyla gerçekleştirdik. Başlamadan önce örnek olarak hazırladığımız “data.csv” dosyamızı indirip bilgisayarımızın ana dizinine indirip HDFS’e atıyoruz.

İndirme bağlantısı; data.rar

İndirdiğimiz dosyayı HDFS üzerine atmak için aşağıdaki kod satırını kullanıyoruz.

hadoop dfs -put data.csv data.csv

İlk örneğimizi çalıştırmak üzere Pig konsolumuza bağlanıyoruz.

dccc2912-1afb-4cf9-a7ae-5f6c5181521a

 

Pig’in çalışma prensibini görmek için sadece verilerimizi yükleyip konsola basan bir script yazalım.

A = LOAD 'products.csv' USING PigStorage();
B = FOREACH A GENERATE $0 AS id, $1 AS name;
dump B;

İlk satırda A değişkenine products.csv dosyası içerisindeki verileri PigStorage ile yükleyeceğimizi belirtiyoruz. PigStorage sınıfı jenerik olarak yazılmış, csv formatındaki verileri yükleyip parçalayabilen bir sınıf. Örnek verimiz tab karakteri ile ayrılmış olduğu için başka bir parametre belirtimiz yok. İkinci satırda ise A verisi içerisinde foreach döngüsüyle dönüyoruz. Buraya kadar olan kısımda henüz yazdığımız kodlar çalışmadılar. DUMP komutu ile kodların çalışmasını ve sonucun ekrana çıkmasını sağlıyoruz:

Sonuç;

1034118b-f9b8-4e68-b689-e7ed0d216faa

Örneğimizi biraz ilerletirsek sadece id’si 3’ten büyük olan değerleri ekrana yazdırmak istiyorsak nasıl bir yol izlemeliyiz ona bakalım.

A = LOAD 'companies.csv' USING PigStorage() AS (productId:int, productName:chararray);
B = FILTER A BY productId > 3;
C = FOREACH B GENERATE *;
DUMP C;

Yukarıdan farklı olarak B değişkenimize “FILTER” metoduyla verileri filtreleyerek atıp dump ile yazdırıyoruz.

Sonuç;

d7a69e4b-d2bd-4359-891f-ef7eb50ba5d1

 

Evet görüldüğü gibi pig ile yapılan işlemler oldukça kısa ve basit. Fakat senaryolarımız genişledikçe kodlarımızda artacaktır. Takıldığınız bir nokta veya sormak istediğiniz bir şey olursa lütfen yorum atın veya batuhantozun@gmail.com adresine mail gönderin.

Büyük verili günler!

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir