ตัวดำเนินการใน Apache Pig: ตอนที่ 1- ตัวดำเนินการเชิงสัมพันธ์



โพสต์นี้อธิบายเกี่ยวกับ Operators ใน Apache Pig ดูโพสต์นี้สำหรับ Operators ใน Apache Pig: ตอนที่ 1 - ตัวดำเนินการเชิงสัมพันธ์

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

Apache Pig คืออะไร?

Apache Pig เป็นภาษาขั้นตอนระดับสูงสำหรับการสืบค้นชุดข้อมูลขนาดใหญ่โดยใช้ Hadoop และ Map Reduce Platform เป็นแพ็คเกจ Java ที่สามารถเรียกใช้สคริปต์จากการใช้งานภาษาใด ๆ ที่รันบน JVM สิ่งนี้ถูกใช้อย่างมากในกระบวนการทำซ้ำ





Apache Pig ช่วยลดความยุ่งยากในการใช้ Hadoop โดยอนุญาตให้มีการสืบค้นแบบ SQL ไปยังชุดข้อมูลแบบกระจายและทำให้สามารถสร้างงานที่ซับซ้อนเพื่อประมวลผลข้อมูลจำนวนมากได้อย่างรวดเร็วและมีประสิทธิภาพ คุณสมบัติที่ดีที่สุดของ Pig คือมีคุณสมบัติเชิงสัมพันธ์มากมายเช่น Join, Group และ Aggregate

ฉันรู้ว่า Pig ฟังดูเหมือนเครื่องมือ ETL มากกว่าและมีคุณสมบัติมากมายที่ใช้ร่วมกับเครื่องมือ ETL แต่ข้อดีของ Pig over ETL tools คือสามารถทำงานบนเซิร์ฟเวอร์หลาย ๆ เซิร์ฟเวอร์พร้อมกันได้



Apache Pig Latin คืออะไร?

Apache Pig สร้างสิ่งที่เป็นนามธรรมของภาษาขั้นตอนที่ง่ายกว่าบน Map Reduce เพื่อแสดงอินเทอร์เฟซที่คล้ายกับ Structured Query Language (SQL) สำหรับแอปพลิเคชัน Hadoop ที่เรียกว่า Apache Pig Latin ดังนั้นแทนที่จะเขียนแอปพลิเคชัน Map Reduce แยกต่างหากคุณสามารถเขียนสคริปต์เดียวใน Apache Pig Latin ที่ขนานกันโดยอัตโนมัติและกระจายไปทั่วคลัสเตอร์ กล่าวง่ายๆคือ Pig Latin คือลำดับของข้อความง่ายๆที่รับอินพุตและสร้างเอาต์พุต ข้อมูลอินพุตและเอาต์พุตประกอบด้วยกระเป๋าแผนที่ทูเปิลและสเกลาร์

โหมดการดำเนินการ Apache Pig:

Apache Pig มีโหมดการทำงานสองโหมด:

  • โหมดท้องถิ่น

ใน 'โหมดท้องถิ่น' ข้อมูลต้นทางจะถูกเลือกจากไดเร็กทอรีภายในระบบคอมพิวเตอร์ของคุณ โหมด MapReduce สามารถระบุได้โดยใช้คำสั่ง 'pig –x local'



ตัวดำเนินการใน Apache Pig - 1

  • โหมด MapReduce:

หากต้องการเรียกใช้ Pig ในโหมด MapReduce คุณต้องเข้าถึงคลัสเตอร์ Hadoop และการติดตั้ง HDFS โหมด MapReduce สามารถระบุได้โดยใช้คำสั่ง 'pig'

ผู้ประกอบการ Apache Pig:

Apache Pig Operators เป็นภาษาขั้นตอนระดับสูงสำหรับการสืบค้นชุดข้อมูลขนาดใหญ่โดยใช้ Hadoop และ Map Reduce Platform คำสั่ง Pig Latin เป็นตัวดำเนินการที่รับความสัมพันธ์เป็นอินพุตและสร้างความสัมพันธ์อื่นเป็นเอาต์พุต ตัวดำเนินการเหล่านี้เป็นเครื่องมือหลักสำหรับ Pig Latin ในการดำเนินการกับข้อมูล ช่วยให้คุณสามารถเปลี่ยนรูปแบบได้โดยการเรียงลำดับการจัดกลุ่มการเข้าร่วมการฉายภาพและการกรอง

มาสร้างไฟล์สองไฟล์เพื่อเรียกใช้คำสั่ง:

เรามีสองไฟล์ที่มีชื่อว่า 'first' และ 'second' ไฟล์แรกมี 3 ช่อง ได้แก่ user, url & id

ไฟล์ที่สองมีสองฟิลด์: url & rating สองไฟล์นี้เป็นไฟล์ CSV

ตัวดำเนินการ Apache Pig สามารถแบ่งได้เป็น: เชิงสัมพันธ์และการวินิจฉัย

ตัวดำเนินการเชิงสัมพันธ์:

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

โหลด:

ตัวดำเนินการ LOAD ใช้เพื่อโหลดข้อมูลจากระบบไฟล์หรือหน่วยเก็บข้อมูล HDFS ไปยัง Pig Relation

ในตัวอย่างนี้ ตัวดำเนินการโหลดจะโหลดข้อมูลจากไฟล์ 'first' เพื่อสร้างความสัมพันธ์ 'loading1' ชื่อฟิลด์ ได้แก่ ผู้ใช้, url, id

แต่ละ:

ตัวดำเนินการนี้สร้างการแปลงข้อมูลตามคอลัมน์ของข้อมูล ใช้เพื่อเพิ่มหรือลบเขตข้อมูลจากความสัมพันธ์ ใช้การดำเนินการ FOREACH-GENERATE เพื่อทำงานกับคอลัมน์ของข้อมูล

FOREACH ผลลัพธ์:

กรอง:

ตัวดำเนินการนี้เลือกทูเปิลจากความสัมพันธ์ตามเงื่อนไข

ในตัวอย่างนี้ เรากำลังกรองระเบียนจาก 'loading1' เมื่อเงื่อนไข 'id' มากกว่า 8

ผลการกรอง:

เข้าร่วม:

ตัวดำเนินการ JOIN ใช้เพื่อดำเนินการภายในการรวม equijoin ของความสัมพันธ์ตั้งแต่สองค่าขึ้นไปตามค่าฟิลด์ทั่วไป ตัวดำเนินการ JOIN จะทำการรวมภายในเสมอ การรวมภายในจะละเว้นคีย์ว่างดังนั้นจึงควรกรองออกก่อนการรวม

ในตัวอย่างนี้ เชื่อมโยงความสัมพันธ์ทั้งสองตามคอลัมน์ 'url' จาก 'loading1' และ 'loading2'

สตริงย่อยใน java คืออะไร

เข้าร่วมผลลัพธ์:

สั่งโดย:

Order By ใช้เพื่อเรียงลำดับความสัมพันธ์ตามฟิลด์อย่างน้อยหนึ่งฟิลด์ คุณสามารถเรียงลำดับจากน้อยไปมากหรือมากไปหาน้อยโดยใช้คำหลัก ASC และ DESC

ในตัวอย่างด้านล่างเรากำลังจัดเรียงข้อมูลในการโหลด 2 ตามลำดับจากน้อยไปหามากในฟิลด์การให้คะแนน

สั่งซื้อตามผลลัพธ์ :

วิธีตั้งค่าเส้นทางสำหรับ java

แตกต่าง:

Distinct จะลบสิ่งที่ซ้ำกันในความสัมพันธ์ให้ใช้ไฟล์อินพุตตามด้านล่างซึ่งมี แอมอึ 8 และ amr, myblog, 10 สองครั้งในไฟล์ เมื่อเราใช้ข้อมูลที่แตกต่างกันในไฟล์นี้รายการที่ซ้ำกันจะถูกลบออก

DISTINCT ผลลัพธ์:

เก็บ:

Store ใช้เพื่อบันทึกผลลัพธ์ลงในระบบไฟล์

นี่เรากำลังประหยัด กำลังโหลด 3 ข้อมูลลงในไฟล์ชื่อ การจัดเก็บ บน HDFS

ผลการจัดเก็บ:

กลุ่ม:

ตัวดำเนินการ GROUP จะจัดกลุ่มสิ่งที่สองเข้าด้วยกันด้วยคีย์กลุ่มเดียวกัน (ฟิลด์คีย์) ฟิลด์คีย์จะเป็นทูเพิลหากคีย์กลุ่มมีมากกว่าหนึ่งฟิลด์มิฉะนั้นจะเป็นประเภทเดียวกับคีย์กลุ่ม ผลลัพธ์ของการดำเนินการ GROUP คือความสัมพันธ์ที่มีหนึ่งทูเพิลต่อกลุ่ม

ในตัวอย่างนี้ กลุ่ม th

e ความสัมพันธ์ 'loading1' ตามคอลัมน์ url

ผลกลุ่ม:

COGROUP:

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

ในกลุ่มตัวอย่างนี้ช่อง 'loading1' และ 'loading2' by url ในทั้งสองความสัมพันธ์

ผล COGROUP:

ข้าม:

ตัวดำเนินการ CROSS ใช้เพื่อคำนวณผลคูณไขว้ (ผลิตภัณฑ์คาร์ทีเซียน) ของความสัมพันธ์ตั้งแต่สองตัวขึ้นไป

การใช้ผลิตภัณฑ์ข้ามกับ loading1 และ loading2.

ผลการข้าม:

LIMIT:

LIMIT ตัวดำเนินการใช้เพื่อ จำกัด จำนวนผลลัพธ์ หากจำนวนทูเปิลเอาท์พุตที่ระบุมีค่าเท่ากับหรือเกินจำนวนทูเปิลในความสัมพันธ์ผลลัพธ์จะรวมทูเปิลทั้งหมดในความสัมพันธ์

ผลลัพธ์ LIMIT:

แยก:

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

แบ่ง load2 ออกเป็นสองความสัมพันธ์ x และ y x ความสัมพันธ์ที่สร้างโดย load2 มีฟิลด์ที่เรตติ้งมากกว่า 8 และความสัมพันธ์ y มีฟิลด์ที่เรตติ้งน้อยกว่าหรือเท่ากับ 8

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป

กระทู้ที่เกี่ยวข้อง:

ตัวดำเนินการใน Apache Pig - ตัวดำเนินการวินิจฉัย

ขั้นตอนในการสร้าง UDF ใน Apache Pig