Apache Pig - สถาปัตยกรรม

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

ในการทำงานเฉพาะโปรแกรมเมอร์โดยใช้ Pig โปรแกรมเมอร์ต้องเขียนสคริปต์ Pig โดยใช้ภาษา Pig Latin และดำเนินการโดยใช้กลไกการดำเนินการใด ๆ (Grunt Shell, UDFs, Embedded) หลังจากดำเนินการสคริปต์เหล่านี้จะผ่านชุดของการแปลงที่ใช้โดย Pig Framework เพื่อสร้างผลลัพธ์ที่ต้องการ

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

ส่วนประกอบของ Apache Pig

ดังแสดงในรูปมีส่วนประกอบต่างๆในกรอบ Apache Pig ให้เรามาดูส่วนประกอบหลัก ๆ

โปรแกรมแยกวิเคราะห์

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

ใน DAG ตัวดำเนินการเชิงตรรกะของสคริปต์จะแสดงเป็นโหนดและกระแสข้อมูลจะแสดงเป็นขอบ

เครื่องมือเพิ่มประสิทธิภาพ

แผนลอจิคัล (DAG) ถูกส่งผ่านไปยังเครื่องมือเพิ่มประสิทธิภาพเชิงตรรกะซึ่งดำเนินการเพิ่มประสิทธิภาพเชิงตรรกะเช่นการฉายภาพและการเลื่อนลง

คอมไพเลอร์

คอมไพเลอร์รวบรวมแผนลอจิคัลที่ปรับให้เหมาะสมเป็นชุดของงาน MapReduce

เครื่องยนต์ Execution

ในที่สุดงาน MapReduce จะถูกส่งไปยัง Hadoop ตามลำดับ สุดท้ายงาน MapReduce เหล่านี้จะถูกดำเนินการบน Hadoop เพื่อให้ได้ผลลัพธ์ที่ต้องการ

Pig Latin Data Model

แบบจำลองข้อมูลของ Pig Latin จะซ้อนกันอย่างสมบูรณ์และอนุญาตให้มีประเภทข้อมูลที่ไม่ใช่อะตอมที่ซับซ้อนเช่น map และ tuple. ด้านล่างนี้คือการแสดงแผนภาพของโมเดลข้อมูลของ Pig Latin

อะตอม

ค่าเดียวใด ๆ ใน Pig Latin โดยไม่คำนึงถึงข้อมูลประเภทนั้นเรียกว่า an Atom. มันถูกจัดเก็บเป็นสตริงและสามารถใช้เป็นสตริงและตัวเลขได้ int, long, float, double, chararray และ bytearray เป็นค่าอะตอมของ Pig ข้อมูลหรือค่าอะตอมอย่างง่ายเรียกว่า afield.

Example - 'ราชา' หรือ '30'

ทูเพิล

เร็กคอร์ดที่สร้างขึ้นจากชุดฟิลด์ที่เรียงลำดับเรียกว่าทูเพิลฟิลด์สามารถเป็นประเภทใดก็ได้ ทูเปิลคล้ายกับแถวในตาราง RDBMS

Example - (ราชา 30)

ถุง

กระเป๋าเป็นชุดทูเปิลที่ไม่เรียงลำดับ กล่าวอีกนัยหนึ่งคอลเลกชันของสิ่งทอ (ไม่ซ้ำกัน) เรียกว่ากระเป๋า ทูเปิลแต่ละอันสามารถมีฟิลด์จำนวนเท่าใดก็ได้ (สคีมาที่ยืดหยุ่น) กระเป๋าแทนด้วย "{}" คล้ายกับตารางใน RDBMS แต่ต่างจากตารางใน RDBMS ไม่จำเป็นที่ทูเพิลทุกตัวจะมีจำนวนฟิลด์เท่ากันหรือฟิลด์ในตำแหน่งเดียวกัน (คอลัมน์) จะมีประเภทเดียวกัน

Example - {(ราชา, 30), (โมฮัมหมัด, 45)}

กระเป๋าสามารถเป็นฟิลด์ที่สัมพันธ์กันได้ ในบริบทนั้นเรียกว่าinner bag.

Example - {ราชา, 30, {9848022338, [email protected],}}

แผนที่

แผนที่ (หรือแผนที่ข้อมูล) คือชุดของคู่คีย์ - ค่า keyต้องเป็นประเภทอักขระและควรไม่ซ้ำกัน valueอาจเป็นประเภทใดก็ได้ แสดงโดย "[]"

Example - [ชื่อ # ราชาอายุ # 30]

ความสัมพันธ์

ความสัมพันธ์คือถุงสิ่งทอ ความสัมพันธ์ใน Pig Latin ไม่มีการเรียงลำดับ (ไม่มีการรับประกันว่า tuples จะถูกประมวลผลตามลำดับใด ๆ )