การเขียนโปรแกรมหมู: Apache Pig Script พร้อม UDF ในโหมด HDFS



การเขียนโปรแกรมหมู: Apache Pig Script พร้อม UDF ในโหมด HDFS นี่คือบล็อกโพสต์เพื่อเรียกใช้สคริปต์ Apache Pig ด้วย UDF ในโหมด HDFS ...

ในบล็อกโพสต์ก่อนหน้านี้เราได้เห็นวิธีการเริ่มต้น การเขียนโปรแกรมและสคริปต์หมู . เราได้เห็นขั้นตอนในการเขียนไฟล์ Pig Script ในโหมด HDFS และ ไม่มี UDF ในส่วนที่สามของซีรีส์นี้เราจะตรวจสอบขั้นตอนในการเขียนสคริปต์หมูด้วย UDF ในโหมด HDFS .

เราได้อธิบายวิธีใช้ Pig UDF โดยการสร้างฟังก์ชันในตัวเพื่ออธิบายการทำงานของฟังก์ชันในตัวของ Pig เพื่อคำอธิบายที่ดีขึ้นเราได้ใช้ฟังก์ชันในตัวสองฟังก์ชัน เราได้ทำสิ่งนี้ด้วยความช่วยเหลือของสคริปต์หมู





ที่นี่เราได้นำตัวอย่างหนึ่งและเราได้ใช้ทั้ง UDF (ฟังก์ชันที่ผู้ใช้กำหนดเอง) เช่นการสร้างสตริงเป็นตัวพิมพ์ใหญ่และรับค่าและเพิ่มพลัง

ชุดข้อมูลแสดงอยู่ด้านล่างซึ่งเราจะใช้ในตัวอย่างนี้:



table

ตรรกะคลุมเครือในปัญญาประดิษฐ์

จุดมุ่งหมายของเราคือการสร้างตัวอักษรคอลัมน์ที่ 1 เป็นตัวพิมพ์ใหญ่และเพิ่มพลังของคอลัมน์ที่ 2 ด้วยค่าของคอลัมน์ที่ 3

เริ่มจากเขียนโค้ดจาวาสำหรับ UDF แต่ละตัว นอกจากนี้เรายังต้องกำหนดค่า JAR 4 ตัวในโปรเจ็กต์ java ของเราเพื่อหลีกเลี่ยงข้อผิดพลาดในการคอมไพล์
ขั้นแรกเราจะสร้างโปรแกรม java ซึ่งทั้งสองได้รับด้านล่าง:



Upper.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.data.Tuple import org.apache.pig.impl.util.WrappedIOException @SuppressWarnings ('deprecation') public class Upper ขยาย EvalFunc {public String exec (Tuple input) พ่น IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (ข้อยกเว้นจ) {throw WrappedIOException.wrap ('Caught exception processing input row', e)}}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data คลาสสาธารณะของ Duple ขยาย EvalFunc {public Long exec (Tuple input) พ่น IOException {ลอง { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * อาจไม่ใช่วิธีที่มีประสิทธิภาพมากที่สุด ... * / สำหรับ (int i = 0 i result) {// เราล้น เตือน แต่อย่าทิ้ง // ข้อยกเว้น เตือน ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // การคืนค่า null จะเป็นการระบุให้ Pig ทราบว่าเราล้มเหลว แต่ // เราต้องการดำเนินการต่อ return null}} return result} catch (Exception e) {// การโยนข้อยกเว้นจะทำให้งานล้มเหลว เปิด IOException ใหม่ ('มีบางอย่างไม่ดีเกิดขึ้น!', จ)}}}

ในการลบข้อผิดพลาดในการคอมไพล์เราต้องกำหนดค่า 4 โถ ในโครงการจาวาของเรา


คลิกที่ปุ่มดาวน์โหลดเพื่อดาวน์โหลด JAR

[buttonleads form_title =” Download Code” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text =” Download JARs”]

ตอนนี้เราส่งออกไฟล์ JAR สำหรับทั้งรหัส java โปรดตรวจสอบขั้นตอนด้านล่างสำหรับการสร้าง JAR

ที่นี่เราได้แสดงสำหรับหนึ่งโปรแกรมดำเนินการในลักษณะเดียวกันในโปรแกรมถัดไปเช่นกัน

หลังจากสร้าง JARs และไฟล์ข้อความเราได้ย้ายข้อมูลทั้งหมดไปยังคลัสเตอร์ HDFS ซึ่งแสดงโดยภาพต่อไปนี้:

ในชุดข้อมูลของเราช่องต่างๆจะคั่นด้วยเครื่องหมายจุลภาค (,)

สร้างรายการที่เชื่อมโยงใน c

หลังจากย้ายไฟล์เราได้สร้างสคริปต์ด้วยนามสกุล. pig และใส่คำสั่งทั้งหมดในไฟล์สคริปต์นั้น

ตอนนี้ในเทอร์มินัลพิมพ์ PIG ตามด้วยชื่อของไฟล์สคริปต์ซึ่งแสดงในภาพต่อไปนี้:

นี่คือผลลัพธ์สำหรับการรันสคริปต์หมู

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

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

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

ข้อมูลเบื้องต้นเกี่ยวกับ Apache Hive