Apache Pig - การรันสคริปต์
ในบทนี้เราจะดูวิธีเรียกใช้สคริปต์ Apache Pig ในโหมดแบทช์
ความคิดเห็นใน Pig Script
ในขณะที่เขียนสคริปต์ในไฟล์เราสามารถรวมความคิดเห็นไว้ในนั้นได้ดังที่แสดงด้านล่าง
ความคิดเห็นหลายบรรทัด
เราจะเริ่มต้นความคิดเห็นแบบหลายบรรทัดด้วย '/ *' ต่อท้ายด้วย '* /'
/* These are the multi-line comments
In the pig script */
ความคิดเห็นบรรทัดเดียว
เราจะเริ่มต้นความคิดเห็นบรรทัดเดียวด้วย "-"
--we can write single line comments like this.
การเรียกใช้ Pig Script ในโหมด Batch
ขณะดำเนินการคำสั่ง Apache Pig ในโหมดแบตช์ให้ทำตามขั้นตอนด้านล่าง
ขั้นตอนที่ 1
เขียนคำสั่ง Pig Latin ที่จำเป็นทั้งหมดในไฟล์เดียว เราสามารถเขียนคำสั่งและคำสั่ง Pig Latin ทั้งหมดในไฟล์เดียวและบันทึกเป็นไฟล์.pig ไฟล์.
ขั้นตอนที่ 2
เรียกใช้สคริปต์ Apache Pig คุณสามารถรันสคริปต์ Pig ได้จากเชลล์ (Linux) ดังที่แสดงด้านล่าง
โหมดท้องถิ่น | โหมด MapReduce |
---|---|
$ หมู -x ท้องถิ่น Sample_script.pig | $ หมู -x mapreduce Sample_script.pig |
คุณสามารถเรียกใช้งานได้จาก Grunt shell เช่นกันโดยใช้คำสั่ง exec ดังที่แสดงด้านล่าง
grunt> exec /sample_script.pig
การเรียกใช้ Pig Script จาก HDFS
นอกจากนี้เรายังสามารถเรียกใช้สคริปต์ Pig ที่อยู่ใน HDFS สมมติว่ามีสคริปต์หมูที่มีชื่อSample_script.pig ในไดเร็กทอรี HDFS ชื่อ /pig_data/. เราสามารถดำเนินการได้ดังที่แสดงด้านล่าง
$ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig
ตัวอย่าง
สมมติว่าเรามีไฟล์ student_details.txt ใน HDFS ที่มีเนื้อหาต่อไปนี้
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
นอกจากนี้เรายังมีตัวอย่างสคริปต์ที่มีชื่อ sample_script.pigในไดเร็กทอรี HDFS เดียวกัน ไฟล์นี้มีคำสั่งที่ดำเนินการและการแปลงไฟล์student ความสัมพันธ์ดังที่แสดงด้านล่าง
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;
คำสั่งแรกของสคริปต์จะโหลดข้อมูลในไฟล์ชื่อ student_details.txt เป็นความสัมพันธ์ที่มีชื่อว่า student.
คำสั่งที่สองของสคริปต์จะจัดเรียงทูเปิลของความสัมพันธ์ตามลำดับจากมากไปหาน้อยตามอายุและจัดเก็บเป็น student_order.
คำสั่งที่สามของสคริปต์จะจัดเก็บ 4 อันดับแรกของ student_order เช่น student_limit.
ในที่สุดคำสั่งที่สี่จะถ่ายโอนเนื้อหาของความสัมพันธ์ student_limit.
ตอนนี้ให้เราดำเนินการ sample_script.pig ดังแสดงด้านล่าง
$./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig
Apache Pig ได้รับการดำเนินการและให้ผลลัพธ์ที่มีเนื้อหาต่อไปนี้
(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)