Lập trình Pig: Apache Pig Script với UDF ở Chế độ HDFS



Lập trình Pig: Apache Pig Script với UDF ở Chế độ HDFS. Đây là một bài đăng trên blog để chạy tập lệnh Apache Pig với UDF ở Chế độ HDFS ...

Trong các bài đăng trên blog trước, chúng ta đã biết cách bắt đầu với Lập trình và viết kịch bản cho lợn . Chúng tôi đã thấy các bước để viết một Tập lệnh lợn ở Chế độ HDFS không có UDF. Trong phần ba của loạt bài này, chúng ta sẽ xem xét các bước để viết một kịch bản Pig với UDF ở Chế độ HDFS .

Chúng tôi đã giải thích cách triển khai Pig UDF bằng cách tạo các hàm tích hợp để giải thích chức năng của hàm tích hợp Pig. Để giải thích rõ hơn, chúng tôi đã sử dụng hai hàm tích hợp. Chúng tôi đã thực hiện điều này với sự trợ giúp của tập lệnh lợn.





Ở đây, chúng tôi đã lấy một ví dụ và chúng tôi đã sử dụng cả UDF (các hàm do người dùng định nghĩa), tức là tạo một chuỗi ở dạng chữ hoa và lấy một giá trị & nâng cao sức mạnh của nó.

Tập dữ liệu được mô tả dưới đây mà chúng tôi sẽ sử dụng trong ví dụ này:



table

cách sử dụng java trình lặp

Mục đích của chúng tôi là tạo chữ cái cột đầu tiên bằng chữ hoa và nâng sức mạnh của cột thứ 2 bằng giá trị của cột thứ 3.

Hãy bắt đầu với việc viết mã java cho mỗi UDF. Ngoài ra, chúng tôi phải cấu hình 4 JAR trong dự án java của chúng tôi để tránh các lỗi biên dịch.
Đầu tiên, chúng tôi sẽ tạo các chương trình java, cả hai đều được đưa ra dưới đây:



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 ('phản đối') lớp công khai Upper mở rộng EvalFunc {public Chuỗi thực thi (Tuple input) ném IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Exception e) {ném WrappedIOException.wrap ('Bắt hàng nhập xử lý ngoại lệ', e)}}}

Power.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.PigWarning import org.apache.pig.data.Tuple public class Pow mở rộng EvalFunc {public Long executive (Tuple input) ném IOException {try { int base = (Integer) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * Có lẽ không phải là phương pháp hiệu quả nhất ... * / for (int i = 0 i result) {// Chúng tôi đã tràn. Đưa ra cảnh báo, nhưng không ném // ngoại lệ. warning ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Trả về null sẽ cho Pig biết rằng chúng tôi đã thất bại nhưng // chúng tôi muốn tiếp tục thực thi. return null}} return result} catch (Exception e) {// Ném một ngoại lệ sẽ khiến tác vụ không thành công. ném IOException mới ('Đã xảy ra sự cố!', e)}}}

Để loại bỏ lỗi biên dịch, chúng tôi phải cấu hình 4 JAR trong dự án java của chúng tôi.


Nhấp vào nút Tải xuống để tải xuống JAR

[buttonleads form_title = ”Tải xuống Mã” redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = ”Tải xuống JAR”]

Bây giờ, chúng tôi xuất tệp JAR cho cả mã java. Vui lòng kiểm tra các bước dưới đây để tạo JAR.

Ở đây, chúng tôi đã hiển thị cho một chương trình, cũng tiến hành theo cách tương tự trong chương trình tiếp theo.

Sau khi tạo các tệp JAR và tệp văn bản, chúng tôi đã di chuyển tất cả dữ liệu sang cụm HDFS, được mô tả bằng các hình ảnh sau:

Trong tập dữ liệu của chúng tôi, các trường được phân tách bằng dấu phẩy (,).

lớp ngẫu nhiên trong ví dụ java

Sau khi di chuyển tệp, chúng tôi đã tạo tập lệnh với phần mở rộng .pig và đặt tất cả các lệnh trong tệp kịch bản đó.

Bây giờ trong terminal, gõ PIG, theo sau là tên của tệp script được hiển thị trong hình sau:

Đây là đầu ra để chạy tập lệnh pig.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến chúng trong phần nhận xét và chúng tôi sẽ liên hệ lại với bạn.

Bài viết liên quan:

Các bước tạo UDF trong Apache Pig

Giới thiệu về Apache Hive