Apache Pig - Komut Dosyalarını Çalıştırma
Bu bölümde, Apache Pig komut dosyalarını toplu modda nasıl çalıştıracağımızı göreceğiz.
Domuz Komut Dosyasında Yorumlar
Bir dosyaya komut dosyası yazarken, aşağıda gösterildiği gibi yorumları da ekleyebiliriz.
Çok satırlı yorumlar
Çok satırlı yorumlara '/ *' ile başlayıp, '* /' ile bitireceğiz.
/* These are the multi-line comments
In the pig script */
Tek satırlı yorumlar
Tek satırlık yorumlara '-' ile başlayacağız.
--we can write single line comments like this.
Toplu Modda Pig Komut Dosyasını Yürütme
Apache Pig deyimlerini toplu iş modunda çalıştırırken, aşağıda verilen adımları izleyin.
Aşama 1
Gerekli tüm Pig Latince ifadeleri tek bir dosyaya yazın. Tüm Pig Latin deyimlerini ve komutlarını tek bir dosyaya yazıp şu şekilde kaydedebiliriz:.pig dosya.
Adım 2
Apache Pig komut dosyasını çalıştırın. Pig betiğini aşağıda gösterildiği gibi kabuktan (Linux) çalıştırabilirsiniz.
Yerel mod | MapReduce modu |
---|---|
$ pig -x yerel Sample_script.pig | $ domuz -x mapreduce Sample_script.pig |
Bunu, aşağıda gösterildiği gibi exec komutunu kullanarak Grunt kabuğundan da çalıştırabilirsiniz.
grunt> exec /sample_script.pig
HDFS'den bir Pig Komut Dosyası Çalıştırma
Ayrıca HDFS'de bulunan bir Pig betiğini de çalıştırabiliriz. Adında bir Pig komut dosyası olduğunu varsayalımSample_script.pig HDFS dizininde /pig_data/. Bunu aşağıda gösterildiği gibi çalıştırabiliriz.
$ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig
Misal
Bir dosyamız olduğunu varsayalım student_details.txt aşağıdaki içeriğe sahip HDFS'de.
student_details.txt
001,Rajiv,Reddy,21,9848022337,Hyderabad
002,siddarth,Battacharya,22,9848022338,Kolkata
003,Rajesh,Khanna,22,9848022339,Delhi
004,Preethi,Agarwal,21,9848022330,Pune
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar
006,Archana,Mishra,23,9848022335,Chennai
007,Komal,Nayak,24,9848022334,trivendram
008,Bharathi,Nambiayar,24,9848022333,Chennai
Ayrıca adında bir örnek betiğimiz var. sample_script.pig, aynı HDFS dizininde. Bu dosya, üzerinde işlemleri ve dönüşümleri gerçekleştiren ifadeleri içerir.student ilişki, aşağıda gösterildiği gibi.
student = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
as (id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray);
student_order = ORDER student BY age DESC;
student_limit = LIMIT student_order 4;
Dump student_limit;
Komut dosyasının ilk ifadesi, verileri adlı dosyaya yükleyecektir. student_details.txt bir ilişki olarak student.
Betiğin ikinci ifadesi, ilişkinin demetlerini yaşa göre azalan sırada düzenleyecek ve şu şekilde saklayacaktır: student_order.
Komut dosyasının üçüncü ifadesi, komut dosyasının ilk 4 demetini saklayacaktır. student_order gibi student_limit.
Son olarak dördüncü ifade, ilişkinin içeriğini student_limit.
Şimdi uygulayalım sample_script.pig Aşağıda gösterildiği gibi.
$./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig
Apache Pig çalıştırılır ve size aşağıdaki içerikle çıktı verir.
(7,Komal,Nayak,24,9848022334,trivendram)
(8,Bharathi,Nambiayar,24,9848022333,Chennai)
(5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar)
(6,Archana,Mishra,23,9848022335,Chennai)
2015-10-19 10:31:27,446 [main] INFO org.apache.pig.Main - Pig script completed in 12
minutes, 32 seconds and 751 milliseconds (752751 ms)