บทช่วยสอน Hadoop Pig: Apache Pig คืออะไร Archiการสอน, ตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Apache Pig เป็นแพลตฟอร์มระดับสูงสำหรับการวิเคราะห์ชุดข้อมูลขนาดใหญ่บน Hadoop โดยผสานภาษาการไหลของข้อมูล Pig Latin เข้ากับรันไทม์ที่คอมไพล์สคริปต์แต่ละตัวเป็น MapReduce, Tez หรือ Spark งานต่างๆ โดยอัตโนมัติ

  • 🔘 ส่วนประกอบสองส่วน: Pig Latin เป็นตัวกำหนดภาษา และรันไทม์ของ Pig จะแปลงสคริปต์แต่ละตัวให้เป็นงานคลัสเตอร์
  • ☑️ ประเภทการดำเนินการ: เวอร์ชันปัจจุบันมี exectype ให้เลือก 6 แบบ โดยใช้แฟล็ก -x ตั้งแต่ local ไปจนถึง Spark.
  • ที่ต้องการ: การติดตั้ง Hadoop ที่ใช้งานได้ พร้อมด้วย Javaโดยต้องมีการส่งออก HADOOP_HOME และ JAVA_HOME ก่อน
  • 🧪 ตัวอย่างการทำงาน: สคริปต์ที่มีคำสั่งสี่คำสั่งนี้จะโหลดไฟล์ SalesJan2009.csv จัดกลุ่มข้อมูลตามประเทศ และบันทึกจำนวนสินค้า
  • 🛠️ แบบจำลองข้อมูล: ประเภทข้อมูลแบบสเกลาร์ รวมถึงทูเพิล แบ็ก และแมป ช่วยให้ Pig สามารถอ่านไฟล์ที่มีโครงสร้างซ้อนกันและโครงสร้างหลวมๆ ได้
  • 📈 รุ่นปัจจุบัน: Apache Pig 0.18.0 เปิดตัวในเดือนกันยายน 2025 พร้อมด้วย Hadoop 3 และ Tez Spark และ Python รองรับ 3

บทช่วยสอน Hadoop Pig ครอบคลุมสถาปัตยกรรม Apache Pig การติดตั้ง และตัวอย่างการใช้งาน Pig Latin

บทแนะนำนี้เริ่มต้นด้วยแนวคิดเบื้องหลัง Apache Pig จากนั้นจะอธิบายขั้นตอนการติดตั้งและการเรียกใช้สคริปต์ Pig Latin ตั้งแต่ต้นจนจบ

อาปาเช่หมูคืออะไร?

หมูเป็นสัตว์ระดับสูง ภาษาโปรแกรม มีประโยชน์สำหรับการวิเคราะห์ชุดข้อมูลขนาดใหญ่ Pig เป็นผลมาจากการพัฒนาของ Yahoo!

ในเฟรมเวิร์ก MapReduce โปรแกรมจำเป็นต้องถูกแปลงเป็นขั้นตอน Map และ Reduce หลายขั้นตอน อย่างไรก็ตาม นี่ไม่ใช่รูปแบบการเขียนโปรแกรมที่นักวิเคราะห์ข้อมูลคุ้นเคย ดังนั้น เพื่อเชื่อมช่องว่างนี้ จึงจำเป็นต้องใช้ abstracสิ่งก่อสร้างที่เรียกว่า Pig ถูกสร้างขึ้นบนยอดของ Hadoop.

Apache Pig ช่วยให้ผู้คนสามารถมุ่งเน้นไปที่การวิเคราะห์ชุดข้อมูลขนาดใหญ่ได้มากขึ้น และใช้เวลาน้อยลงในการเขียนโปรแกรม MapReduce เช่นเดียวกับหมูที่กินได้ทุกอย่าง ภาษาโปรแกรม Apache Pig ถูกออกแบบมาให้ทำงานกับข้อมูลทุกประเภท นั่นคือเหตุผลที่ชื่อว่า Pig! มาสคอตของโครงการด้านล่างก็สื่อความหมายเดียวกันนี้

ภาพการ์ตูนหมูที่ใช้เป็นมาสคอตของ Apache Pig แสดงให้เห็นว่า Pig สามารถประมวลผลข้อมูลได้ทุกประเภท

โครงการนี้ยังคงดำเนินอยู่ Apache Pig 0.18.0 เปิดตัวเมื่อวันที่ 15 กันยายน 2025 และเพิ่มการรองรับ Hadoop 3, Tez 0.10, Hive 3 Spark 3, HBase 2 และ Python ตามข้อมูลของ 3 หน้าดาวน์โหลด Apache Pigคำแนะนำด้านล่างนี้เขียนขึ้นโดยอ้างอิงจากเวอร์ชัน 0.12.1 ซึ่งเก่ากว่ามาก ดังนั้นบางขั้นตอนจึงมีหมายเหตุเพิ่มเติม เนื่องจากเวอร์ชันปัจจุบันมีพฤติกรรมที่แตกต่างออกไป

หมู Archiเทคเจอร์

โครงสร้างของ Pig ประกอบด้วยสองส่วน:

  1. หมูละติน ซึ่งเป็นภาษา
  2. สภาพแวดล้อมรันไทม์ สำหรับใช้ในการดำเนินโปรแกรม Pig Latin

โปรแกรม Pig Latin ประกอบด้วยชุดของการดำเนินการหรือการแปลงข้อมูล ซึ่งนำไปใช้กับข้อมูลขาเข้าเพื่อสร้างข้อมูลขาออก การดำเนินการเหล่านี้อธิบายถึงการไหลของข้อมูล ซึ่งจะถูกแปลงเป็นรูปแบบที่สามารถเรียกใช้งานได้โดยสภาพแวดล้อมการทำงานของ Hadoop Pig โดยพื้นฐานแล้ว ผลลัพธ์ของการแปลงเหล่านี้คือชุดของ... แผนที่ลด งานบางอย่างที่โปรแกรมเมอร์ไม่รู้ตัว ดังนั้น ในแง่หนึ่ง Pig ใน Hadoop ช่วยให้โปรแกรมเมอร์สามารถมุ่งเน้นไปที่ข้อมูลมากกว่าลักษณะการทำงานของโปรแกรม

ภาษา Pig Latin เป็นภาษาที่มีโครงสร้างค่อนข้างตายตัว โดยใช้คำหลักที่คุ้นเคยจากการประมวลผลข้อมูล เช่น Join, Group และ Filter ดังแสดงในแผนภาพด้านล่าง tracคือสคริปต์จากเชลล์ Grunt ผ่านตัวแยกวิเคราะห์ ตัวปรับแต่งประสิทธิภาพ และตัวคอมไพเลอร์ ก่อนที่จะถึงกลไกการประมวลผล

แผนภาพสถาปัตยกรรมของ Apache Pig แสดงให้เห็นว่าสคริปต์ Pig Latin ผ่านตัวแยกวิเคราะห์ ตัวเพิ่มประสิทธิภาพ และตัวคอมไพเลอร์ ก่อนที่จะไปถึงกลไกการประมวลผล

โหมดการดำเนินการ

Pig ใน Hadoop มีโหมดการทำงานสองโหมด และขั้นตอนการติดตั้งด้านล่างนี้จะใช้ทั้งสองโหมด:

  1. โหมดโลคอล: ในโหมดนี้ ภาษา Hadoop Pig จะทำงานในโหมดเดียว JVM และใช้ระบบไฟล์ในเครื่อง โหมดนี้เหมาะสำหรับการวิเคราะห์ชุดข้อมูลขนาดเล็กโดยใช้ Pig ใน Hadoop เท่านั้น
  2. โหมด MapReduce: ในโหมดนี้ คำสั่งค้นหาที่เขียนด้วย Pig Latin จะถูกแปลงเป็นงาน MapReduce และรันบนคลัสเตอร์ Hadoop (คลัสเตอร์อาจเป็นแบบกึ่งกระจายหรือแบบกระจายอย่างสมบูรณ์) โหมด MapReduce กับคลัสเตอร์แบบกระจายอย่างสมบูรณ์มีประโยชน์สำหรับการรัน Pig บนชุดข้อมูลขนาดใหญ่

สองอย่างนั้นเป็นคู่คลาสสิก เวอร์ชันปัจจุบันมีประเภทการดำเนินการหรือ exectypes ให้เลือกถึงหกแบบ โดยแต่ละแบบสามารถเลือกได้ด้วยวิธีเดียวกัน -x ธง ตามที่บันทึกไว้ใน คู่มือเริ่มต้นใช้งาน Pig เวอร์ชัน 0.18.0.

ประเภทการดำเนินการ คำสั่ง สถานที่ที่งานดำเนินไป
องถิ่น หมู -x ท้องถิ่น JVM เดียวที่ใช้งานกับระบบไฟล์ในเครื่อง
เทซ โลคอล pig -x tez_local JVM เดียวที่ใช้รันไทม์ Tez (ทดลอง)
Spark ในประเทศ pig -x spark_local JVM เดียวที่ใช้ Spark ระยะเวลาการทำงาน (ทดลอง)
แผนที่ลด pig หรือ pig -x mapreduce คลัสเตอร์ Hadoop ที่ใช้ HDFS; นี่คือค่าเริ่มต้น
Tez หมู -x tez คลัสเตอร์ Hadoop ที่ทำงานบนเอนจิน Tez
Spark หมู -x ประกายไฟ A Sparkคลัสเตอร์ YARN หรือ Mesos ที่ใช้ HDFS

ประเภทข้อมูล Pig Latin และ Operaโปร

ก่อนที่จะเขียนสคริปต์ สิ่งสำคัญคือต้องรู้ว่า Pig สามารถเก็บข้อมูลอะไรได้บ้างและทำอะไรกับข้อมูลเหล่านั้นได้บ้าง โมเดลข้อมูลของ Pig เป็นแบบซ้อนกันอย่างสมบูรณ์ ซึ่งเป็นสิ่งที่ทำให้ Pig สามารถอ่านไฟล์บันทึกและข้อมูลป้อนเข้าที่มีโครงสร้างหลวมๆ อื่นๆ ที่ตารางเชิงสัมพันธ์ไม่สามารถทำได้

ภาษา Pig Latin แบ่งออกเป็นสองกลุ่มหลัก:

  • ประเภทสเกลาร์: int, long, float, double, chararray, bytearray, boolean, datetime, biginteger และ bigdecimalตัวอย่างสคริปต์ในภายหลังจะประกาศคอลัมน์ทุกคอลัมน์เป็น chararray.
  • ประเภทที่ซับซ้อน: a ทูเพิล เป็นชุดของฟิลด์ที่เรียงลำดับและมีลักษณะการทำงานเหมือนแถว; ถุง เป็นชุดของทูเปิลที่ไม่มีลำดับ และมีลักษณะการทำงานเหมือนตาราง แผนที่ คือชุดของคู่คีย์และค่า โดยที่คีย์จะต้องเป็น chararray.

พนักงานฝ่ายปฏิบัติการมีหน้าที่รับผิดชอบงานเพียงไม่กี่อย่าง และมีคนเพียงไม่กี่คนเท่านั้นที่รับผิดชอบงานท่อส่งเกือบทั้งหมด:

OperaTor สิ่งที่มันไม่
โหลด / จัดเก็บ อ่านความสัมพันธ์จากระบบไฟล์และเขียนผลลัพธ์กลับเข้าไป
FILTER เก็บเฉพาะทูเปิลที่ตรงตามเงื่อนไขเท่านั้น
สำหรับแต่ละ... สร้าง ทำงานทีละคอลัมน์ สร้างฟิลด์ใหม่
กลุ่ม / กลุ่มร่วม จัดกลุ่มความสัมพันธ์หนึ่งรายการ หรือความสัมพันธ์สองรายการขึ้นไป โดยใช้กุญแจกำหนด
สมัคร รวมความสัมพันธ์โดยใช้การเชื่อมต่อภายในหรือภายนอก
สหภาพ / สปลิต รวมความสัมพันธ์เข้าด้วยกัน หรือแบ่งความสัมพันธ์หนึ่งออกเป็นหลายส่วน
เรียงลำดับตาม / ที่ไม่ซ้ำกัน / จำกัด จัดเรียง ลบข้อมูลซ้ำ และจำกัดจำนวนทูเปิล
ดัมพ์ / อธิบาย / ชี้แจง / ยกตัวอย่าง ตรวจสอบผลลัพธ์ โครงสร้างข้อมูล แผนการดำเนินการ และตัวอย่างการทำงาน

พนักงานตรวจสอบทั้งสี่คนมีทางลัดของ Grunt เช่นกัน ซึ่งช่วยประหยัดเวลาได้มากping ระหว่างการดีบัก: \d สำหรับ DUMP, \de สำหรับคำอธิบาย (DESCRIBE) \e เพื่ออธิบายและ \i เพื่อประกอบการอธิบาย

เบื้องต้น

Pig เป็นเครื่องมือฝั่งไคลเอ็นต์ มันวิเคราะห์สคริปต์ วางแผนการทำงาน และส่งงาน แต่ไม่ได้ให้พื้นที่จัดเก็บข้อมูลหรือคลัสเตอร์ของตัวเอง ดังนั้นจึงต้องมีการติดตั้ง Hadoop ที่ใช้งานได้ก่อน ส่วนข้อกำหนดของ Apache นั้นสั้นมาก

ตัวแทน ความต้องการ ทำไมจึงจำเป็นต้องใช้
Hadoop Hadoop เวอร์ชัน 2.x หรือ 3.x โดยต้องส่งออกค่า HADOOP_HOME ด้วย จัดเตรียม HDFS และเอนจินการประมวลผล หากไม่มี HADOOP_HOME, Pig 0.18.0 จะเปลี่ยนไปใช้ Hadoop 2.7.3 แบบฝังตัวแทน
Java Java เวอร์ชัน 1.7 หรือใหม่กว่า โดยตั้งค่า JAVA_HOME ให้เป็นไดเร็กทอรีการติดตั้งหลัก Pig และ Hadoop daemons คือ Java โปรแกรม
Python (ถ้ามี) Python 2.7 จำเป็นสำหรับการสตรีมมิ่งเท่านั้น Python ฟังก์ชันที่ผู้ใช้กำหนด
มด (ไม่จำเป็น) มด 1.8 จำเป็นเฉพาะเมื่อทำการสร้างหรือคอมไพล์ Pig ใหม่จากซอร์สโค้ดเท่านั้น

นอกจากรายการดังกล่าวแล้ว ยังมีประเด็นสำคัญอีกสองข้อที่ควรพิจารณา ข้อแรกคือ ให้รันทุกอย่างในฐานะผู้ใช้ Linux ที่มีไดเร็กทอรีโฮมอยู่แล้ว เอชดีเอฟเอส และได้รับอนุญาตให้เขียนลงในนั้น บทช่วยสอนนี้ใช้ hduserบัญชีที่สร้างขึ้นระหว่างการติดตั้ง Hadoop ประการที่สอง เริ่มคลัสเตอร์ก่อนที่จะเรียกใช้ Pig ในโหมด MapReduce เนื่องจาก Pig จะล้มเหลวทันทีหาก ​​NameNode และ ResourceManager หยุดทำงาน หากยังไม่ได้ติดตั้ง Hadoop ให้ทำตามขั้นตอนต่อไปนี้ วิธีการติดตั้ง Hadoop ก่อน

วิธีดาวน์โหลดและติดตั้ง Pig

ในบทช่วยสอน Apache Pig นี้ เราจะได้เรียนรู้วิธีดาวน์โหลดและติดตั้ง Pig:

ก่อนที่เราจะเริ่มกระบวนการจริง โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Hadoop แล้ว เปลี่ยนชื่อผู้ใช้เป็น 'hduser' (รหัสผู้ใช้ที่ใช้ในการกำหนดค่า Hadoop คุณสามารถเปลี่ยนไปใช้รหัสผู้ใช้ที่คุณใช้ในการกำหนดค่า Hadoop ของคุณเองได้)

คำสั่งในเทอร์มินัลจะเปลี่ยนผู้ใช้ Linux เป็น hduser ก่อนเริ่มการติดตั้ง Pig

ขั้นตอน 1) ดาวน์โหลด Pig Hadoop เวอร์ชันล่าสุดที่เสถียรได้จากเว็บไซต์สำรองใดก็ได้ที่มีให้เลือก

https://pig.apache.org/releases.html

เลือกไฟล์ tar.gz (ไม่ใช่ src.tar.gz) เพื่อดาวน์โหลด ตามที่แสดงด้านล่าง

Apache Pig เปิดตัวหน้าดาวน์โหลดไฟล์ tar.gz ให้เลือกใช้งานได้

ขั้นตอน 2) เมื่อดาวน์โหลดเสร็จแล้ว ให้เข้าไปยังไดเร็กทอรีที่มีไฟล์ tar ที่ดาวน์โหลดมา และย้ายไฟล์ tar ไปยังตำแหน่งที่คุณต้องการติดตั้ง Pig Hadoop ในกรณีนี้ เราจะย้ายไปที่ /usr/local

เทอร์มินัลกำลังย้ายไฟล์ tar ของ Pig ที่ดาวน์โหลดมาไปยังไดเร็กทอรี /usr/local

ย้ายไปยังไดเร็กทอรีที่จะเก็บไฟล์ Pig Hadoop

cd /usr/local

Extracเนื้อหาของไฟล์ tar มีดังต่อไปนี้

sudo tar -xvf pig-0.12.1.tar.gz

เทอร์มินัล เอ็กtracแตกไฟล์เก็บถาวร Pig ด้วยคำสั่ง sudo tar -xvf

ขั้นตอน 3) แก้ไขไฟล์ ~/.bashrc เพื่อเพิ่มตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับ Pig

เปิดไฟล์ ~/.bashrc ด้วยโปรแกรมแก้ไขข้อความใดก็ได้ที่คุณเลือก และทำการแก้ไขตามด้านล่างนี้

export PIG_HOME=<Installation directory of Pig>
export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH

โปรแกรมแก้ไขข้อความแสดงบรรทัดการส่งออก PIG_HOME และ PATH ที่เพิ่มลงในไฟล์ bashrc

ขั้นตอน 4) ตอนนี้ ให้เรียกใช้การกำหนดค่าสภาพแวดล้อมนี้โดยใช้คำสั่งด้านล่าง

. ~/.bashrc

เรียกใช้ไฟล์ bashrc ผ่านเทอร์มินัลเพื่อให้ตัวแปรสภาพแวดล้อมใหม่ของ Pig มีผลบังคับใช้

ขั้นตอน 5) เราจำเป็นต้องคอมไพล์ Pig ใหม่เพื่อให้รองรับ Hadoop เวอร์ชัน 2.2.0

ต่อไปนี้คือขั้นตอนในการดำเนินการดังกล่าว

ไปที่หน้าหลักของ Pig

cd $PIG_HOME

ติดตั้ง Ant.

sudo apt-get install ant

ติดตั้ง Apache Ant ผ่านเทอร์มินัลด้วย apt-get เพื่อเตรียมพร้อมสำหรับการคอมไพล์ Pig ใหม่

หมายเหตุ: การดาวน์โหลดจะเริ่มต้นและจะใช้เวลาตามความเร็วอินเทอร์เน็ตของคุณ

คอมไพล์ Pig ใหม่

sudo ant clean jar-all -Dhadoopversion=23

เทอร์มินัลกำลังรันเป้าหมาย Ant ที่คอมไพล์ Pig ใหม่สำหรับ Hadoop 2

โปรดทราบว่าในขั้นตอนการคอมไพล์ใหม่นี้ จะมีการดาวน์โหลดส่วนประกอบหลายอย่าง ดังนั้นระบบควรเชื่อมต่อกับอินเทอร์เน็ต

นอกจากนี้ หากกระบวนการนี้ติดขัดตรงไหน และคุณไม่เห็นความเคลื่อนไหวใดๆ บนหน้าต่างคำสั่งนานกว่า 20 นาที ให้กด Ctrl + c แล้วเรียกใช้คำสั่งเดิมอีกครั้ง

ในกรณีของเรา ใช้เวลา 20 นาที

ข้อความที่แสดงในเทอร์มินัลจากการคอมไพล์ Pig ใหม่ ซึ่งใช้เวลาประมาณยี่สิบนาทีในตัวอย่างนี้

ขั้นตอนการคอมไพล์ใหม่นี้เป็นส่วนหนึ่งของยุค 0.12.1 ซึ่งไฟล์ jar ที่จัดส่งนั้นสร้างขึ้นโดยใช้ Hadoop 1 และ -Dhadoopversion=23 แฟล็กดังกล่าวเปลี่ยนการสร้าง Ant ไปใช้ Hadoop เวอร์ชัน 0.23 และ 2.x Apache Pig เวอร์ชัน 0.18.0 มาพร้อมกับไบนารีที่สามารถทำงานได้บน Hadoop 2.7 ขึ้นไป รวมถึง Hadoop 3 ด้วย ดังนั้นในเวอร์ชันปัจจุบัน คุณสามารถแตกไฟล์ tarball และข้ามไปทำการทดสอบด้านล่างได้เลย

ขั้นตอน 6) ทดสอบการติดตั้ง Pig โดยใช้คำสั่ง

pig -help

ผลลัพธ์จากคำสั่ง pig -help ที่แสดงรายการตัวเลือกบรรทัดคำสั่งของ Pig หลังจากการติดตั้ง

ตัวอย่างสคริปต์หมู

เมื่อติดตั้ง Pig เสร็จแล้ว ส่วนที่เหลือของบทช่วยสอน Apache Pig นี้จะรันสคริปต์ทั้งหมด เราจะใช้สคริปต์ Pig เพื่อค้นหาจำนวนสินค้าที่ขายได้ในแต่ละประเทศ

ข้อมูลนำเข้า: ชุดข้อมูลนำเข้าของเราเป็นไฟล์ CSV ยอดขายมกราคม 2009.csv.

ขั้นตอน 1) เริ่มต้นใช้งาน Hadoop

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

ขั้นตอน 2) Pig ใน Big Data ดึงไฟล์จาก HDFS ในโหมด MapReduce และจัดเก็บผลลัพธ์กลับไปยัง HDFS

คัดลอกไฟล์ SalesJan2009.csv (ซึ่งจัดเก็บไว้ในระบบไฟล์ภายในเครื่องที่ ~/input/SalesJan2009.csv) ไปยังไดเร็กทอรีหลักของ HDFS (Hadoop Distributed File System)

ในตัวอย่างของ Apache Pig นี้ ไฟล์อยู่ในโฟลเดอร์ input หากไฟล์ถูกเก็บไว้ในตำแหน่งอื่น ให้ระบุชื่อตำแหน่งนั้นแทน

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /

คัดลอกไฟล์ SalesJan2009.csv จากระบบไฟล์ในเครื่องไปยัง HDFS ผ่านเทอร์มินัล

ตรวจสอบว่าไฟล์ถูกคัดลอกสำเร็จหรือไม่

$HADOOP_HOME/bin/hdfs dfs -ls /

รายการรูท HDFS ยืนยันว่าไฟล์ SalesJan2009.csv ถูกคัดลอกเรียบร้อยแล้ว

ขั้นตอน 3) การกำหนดค่าหมู

ขั้นแรก ให้เข้าไปที่ $PIG_HOME/conf และคัดลอกไฟล์คุณสมบัติเดิมเก็บไว้

cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original

ทำการสำรองข้อมูล pig.properties ผ่านเทอร์มินัลก่อนที่จะแก้ไขการตั้งค่า Pig

เปิดไฟล์ pig.properties โดยใช้โปรแกรมแก้ไขข้อความที่คุณเลือก และระบุเส้นทางของไฟล์บันทึกโดยใช้ pig.logfile

sudo gedit pig.properties

ไฟล์การกำหนดค่า pig.properties จะเปิดในโปรแกรมแก้ไขข้อความที่การตั้งค่าไฟล์บันทึก

โปรแกรมบันทึกข้อมูลจะใช้ไฟล์นี้ในการบันทึกข้อผิดพลาด

ขั้นตอน 4) เรียกใช้คำสั่ง 'pig' ซึ่งจะเปิดพรอมต์คำสั่ง Pig ซึ่งเป็นเชลล์แบบโต้ตอบสำหรับการสอบถามข้อมูลด้วย Pig

pig

เชลล์แบบโต้ตอบของ Grunt จะเริ่มต้นหลังจากรันคำสั่ง pig แล้ว

ขั้นตอน 5) ในหน้าต่าง Command Prompt ของ Grunt สำหรับ Pig ให้รันคำสั่ง Pig ด้านล่างตามลำดับ

— A. โหลดไฟล์ที่มีข้อมูล

salesTable = LOAD '/SalesJan2009.csv' USING PigStorage(',') AS (Transaction_date:chararray,Product:chararray,Price:chararray,Payment_Type:chararray,Name:chararray,City:chararray,State:chararray,Country:chararray,Account_Created:chararray,Last_Login:chararray,Latitude:chararray,Longitude:chararray);

กด Enter หลังจากคำสั่งนี้

Grunt shell ยอมรับคำสั่ง LOAD ที่อ่านไฟล์ CSV ข้อมูลการขายลงในความสัมพันธ์

— ข. จัดกลุ่มข้อมูลตามฟิลด์ ประเทศ

GroupByCountry = GROUP salesTable BY Country;

บริษัท Grunt Shell ยอมรับคำสั่ง GROUP ที่จัดกลุ่มความสัมพันธ์ทางการขายตามประเทศ

— C. สำหรับแต่ละทูเปิลใน 'GroupByCountry' ให้สร้างสตริงผลลัพธ์ในรูปแบบ ชื่อประเทศ: จำนวนสินค้าที่ขายได้

CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));

กด Enter หลังจากคำสั่งนี้

เชลล์ Grunt ยอมรับคำสั่ง FOREACH GENERATE ที่สร้างสตริงประเทศและจำนวน

— D. บันทึกผลลัพธ์ของการไหลเวียนของข้อมูลลงในไดเร็กทอรี 'pig_output_sales' บน HDFS

STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');

Grunt shell ยอมรับคำสั่ง STORE ที่เขียนเอาต์พุตไปยังไดเร็กทอรี pig_output_sales

คำสั่งนี้จะใช้เวลาสักครู่ในการประมวลผล เมื่อเสร็จสิ้นแล้ว คุณจะเห็นหน้าจอดังต่อไปนี้

หน้าจอคอนโซลจะแสดงขึ้นเมื่อคำสั่ง STORE ทำงานเสร็จสิ้นแล้ว

ขั้นตอน 6) สามารถดูผลลัพธ์ได้ผ่านทางอินเทอร์เฟซคำสั่งดังนี้

$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000

ผลลัพธ์จากบรรทัดคำสั่งของไฟล์ผลลัพธ์ที่แสดงรายการสินค้าที่ขายได้ในแต่ละประเทศ

สามารถดูผลลัพธ์ผ่านทางเว็บอินเตอร์เฟสได้เช่นกัน

เปิด http://localhost:50070/ ในเว็บเบราว์เซอร์

พอร์ต 50070 คือเว็บ UI ของ NameNode บน Hadoop 2 Hadoop 3 ได้ย้ายหน้าเว็บเดียวกันนี้ไปที่พอร์ต 9870 ดังนั้นหากคลัสเตอร์ของคุณใช้ Hadoop 3 ให้ใช้ที่อยู่ดังกล่าวแทน

เว็บอินเทอร์เฟซของ Hadoop NameNode ใช้สำหรับเรียกดูระบบไฟล์ HDFS

จากนั้นเลือก 'เรียกดูระบบไฟล์' และไปยังไดเร็กทอรี /user/hduser/pig_output_sales

โปรแกรมดูไฟล์ HDFS แสดงไดเร็กทอรี pig_output_sales ภายใต้พาธโฮมของผู้ใช้ hduser

เปิดไฟล์ part-r-00000 เพื่ออ่านข้อมูลคู่ประเทศและจำนวนสินค้าที่สคริปต์สร้างขึ้น

มุมมองเบราว์เซอร์ของไฟล์เอาต์พุต part-r-00000 ที่แสดงคู่ประเทศและจำนวนผลิตภัณฑ์

Apache Pig เทียบกับ Hive เทียบกับ MapReduce

โดยปกติแล้ว การประเมินผลงานโดยใช้เกณฑ์ Pig เพียงอย่างเดียวมักไม่ค่อยเกิดขึ้น คำถามที่ถามกันทั่วไปคือ งานนั้นควรอยู่ในเกณฑ์ Pig หรือไม่ รัง หรือเขียนโปรแกรม MapReduce ด้วยมือก็ได้ เพราะสุดท้ายแล้วทั้งสามแบบก็จะเป็นงานบนคลัสเตอร์เดียวกัน

แง่มุม แมปรีดิวซ์ (Java) อาปาเช่หมู อาปาเช่ไฮฟ์
อินเตอร์เฟซ Java API Pig Latin ภาษาเขียนสคริปต์การไหลของข้อมูล ไฮฟ์คิวแอลภาษาถิ่นของ SQL
ระดับของ abstracการ ต่ำ กลาง จุดสูง
ผู้ใช้ทั่วไป Java ผู้พัฒนา วิศวกรข้อมูลหรือนักวิจัย นักวิเคราะห์ที่เชี่ยวชาญด้าน SQL
ข้อมูลที่เหมาะสม ทุกสิ่งทุกอย่างที่จัดการด้วยมือ มีทั้งแบบมีโครงสร้างและกึ่งมีโครงสร้าง โดยสามารถเลือกใช้โครงสร้างข้อมูลได้ในขณะโหลดข้อมูล ตารางที่มีโครงสร้างซึ่งลงทะเบียนไว้ในเมตาสโตร์
Code ปริมาณ เส้นส่วนใหญ่ จำนวนแถวน้อยลง จำนวนบรรทัดน้อยที่สุดสำหรับคำสั่งค้นหา
ดำเนินการเป็น งาน MapReduce คอมไพล์เป็น MapReduce, Tez หรือ Spark ตำแหน่งงาน คอมไพล์เป็น MapReduce, Tez หรือ Spark ตำแหน่งงาน
ดีที่สุดที่ ควบคุมได้อย่างเต็มที่และกำหนดตรรกะได้เอง ไปป์ไลน์ ETL หลายขั้นตอน การสอบถามและการรายงานแบบเฉพาะกิจ

ในทางปฏิบัติ การแบ่งประเภทนั้นตรงไปตรงมา เลือกใช้ Hive เมื่อข้อมูลมีลักษณะเป็นตารางอยู่แล้วและคำถามมีลักษณะเป็น SQL เลือกใช้ Pig เมื่อข้อมูลนำเข้าไม่เป็นระเบียบ เมื่อไปป์ไลน์เป็นห่วงโซ่ของการแปลงข้อมูลแทนที่จะเป็นคำสั่ง SQL เดียว หรือเมื่อสคริปต์เดียวกันต้องแยกและรวมใหม่ เลือกใช้ MapReduce เฉพาะเมื่อทั้งสองอย่างไม่เหมาะสมtraction สามารถแสดงตรรกะได้ เนื่องจากจำนวนบรรทัดเพิ่มขึ้นอย่างรวดเร็ว

หมูสามารถอยู่ร่วมกับสิ่งมีชีวิตอื่นๆ ในระบบนิเวศได้อย่างกลมกลืน สควูปและฟลูม จัดเก็บข้อมูลดิบ ใช้ Pig หรือ Hive ในการปรับแต่งรูปร่าง และใช้ตัวจัดตารางเวลา เช่น อะปาเช่ อูซี่ เชื่อมโยงขั้นตอนต่างๆ เข้าด้วยกันเป็นกระบวนการทำงานที่ทำซ้ำได้ สำหรับภาพรวมที่กว้างขึ้นว่าเครื่องมือเหล่านี้เหมาะสมกับการใช้งานในด้านใดบ้าง โปรดดูคู่มือ ข้อมูลขนาดใหญ่ และการสรุปโดยรวมของ เครื่องมือข้อมูลขนาดใหญ่สำหรับทางเลือก ETL เชิงพาณิชย์แทนการเขียนสคริปต์ด้วยมือ โปรดดูที่ Talend.

คำถามที่พบบ่อย

ใช่แล้ว Apache Pig เวอร์ชัน 0.18.0 เปิดตัวเมื่อวันที่ 15 กันยายน 2025 และรองรับ Hadoop 3, Tez 0.10 และ Hive 3 Spark 3, HBase 2 และ Python 3. การพัฒนาเป็นไปอย่างช้ากว่าในช่วงที่อยู่กับ Yahoo! แต่โครงการนี้ยังไม่ได้ถูกยกเลิก

ผู้ช่วย AI จะร่างตรรกะการแปลงข้อมูลจากคำอธิบายอย่างง่าย แนะนำคีย์การเชื่อมต่อ ระบุความคลาดเคลื่อนของโครงสร้างข้อมูลระหว่างการทำงาน และสรุปบันทึกคลัสเตอร์เป็นสาเหตุที่เป็นไปได้ ควรพิจารณาผลลัพธ์เป็นเพียงร่างแรกที่ยังต้องตรวจสอบกับข้อมูลจริงเพิ่มเติม

Copilot สร้างโค้ด Pig Latin ที่ดูสมจริงได้อย่างรวดเร็ว เนื่องจากไวยากรณ์นั้นมีอยู่ในคลังเก็บข้อมูลสาธารณะหลายแห่ง อย่างไรก็ตาม มันอาจสร้างชื่อฟังก์ชันขึ้นมาเองและจัดตำแหน่งฟิลด์ไม่ตรงกัน ดังนั้นควรเรียกใช้คำสั่ง DESCRIBE และ ILLUSTRATE กับตัวอย่างก่อนที่จะเชื่อถือสคริปต์ที่สร้างขึ้น

โปรแกรม Pig จะทำงานก็ต่อเมื่อมีคำสั่งบังคับให้สร้างข้อมูลเท่านั้น ชุดคำสั่ง LOAD และ FOREACH จะถูกตรวจสอบความถูกต้อง แต่จะไม่ทำงานจนกว่าจะมีคำสั่ง DUMP หรือ STORE ตามมา ดังนั้นสคริปต์ที่สิ้นสุดหลังจากการแปลงข้อมูลจึงทำงานเสร็จสิ้นโดยไม่มีการแจ้งเตือนใดๆ

คำสั่ง DUMP จะพิมพ์ความสัมพันธ์ไปยังเทอร์มินัลและมีไว้สำหรับการทดสอบ ส่วนคำสั่ง STORE จะเขียนความสัมพันธ์ไปยังระบบไฟล์ผ่านฟังก์ชันจัดเก็บข้อมูล เช่น PigStorage สคริปต์ที่ใช้งานจริงควรจบด้วยคำสั่ง STORE เสมอ

ไม่ เงื่อนไข AS เป็นตัวเลือกเสริม หากไม่มีเงื่อนไขนี้ ทุกฟิลด์จะถูกโหลดเป็นไบต์อาร์เรย์และอ้างอิงตามตำแหน่ง เช่น $0 และ $1 การประกาศสคีมาจะทำให้สคริปต์อ่านง่ายขึ้นและช่วยให้ Pig ตรวจสอบประเภทได้เร็วขึ้น

ท่อส่งใหม่ส่วนใหญ่เริ่มต้นที่ Sparkซึ่งมีชุมชนขนาดใหญ่กว่าและไลบรารีที่หลากหลายกว่า Pig ยังคงเหมาะสมในกรณีที่มีสคริปต์อยู่แล้ว ในกรณีที่ทีมงานชื่นชอบไวยากรณ์การไหลของข้อมูล หรือในกรณีที่ Pig ทำงานบน Spark ผ่านทาง spark exectype

Sqoop นำเข้าข้อมูลจากตารางเชิงสัมพันธ์ และ Flume ส่งข้อมูลบันทึกไปยัง HDFS จากนั้น Pig จะแปลงข้อมูลที่ได้รับมา Oozie จะเชื่อมโยงขั้นตอนการนำเข้า การแปลง และการส่งออกเข้าด้วยกันในเวิร์กโฟลว์ที่กำหนดเวลาไว้ เพื่อให้ไปป์ไลน์ทำงานซ้ำโดยไม่ต้องเรียกใช้งานด้วยตนเอง

สรุปโพสต์นี้ด้วย: