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)