برمجة Pig: Apache Pig Script مع UDF في وضع HDFS



برمجة Pig: Apache Pig Script مع UDF في وضع HDFS. إليك منشور مدونة لتشغيل برنامج Apache Pig النصي باستخدام UDF في وضع HDFS ...

رأينا في منشورات المدونة السابقة كيف نبدأ بها برمجة الخنازير والكتابة . لقد رأينا خطوات كتابة أ نص خنزير في وضع HDFS و بدون UDF. في الجزء الثالث من هذه السلسلة ، سنراجع خطوات كتابة نص Pig UDF في وضع HDFS .

لقد أوضحنا كيفية تنفيذ Pig UDF من خلال إنشاء وظائف مدمجة لشرح وظيفة وظيفة Pig المدمجة. لتوضيح أفضل ، اتخذنا وظيفتين مضمنتين. لقد فعلنا ذلك بمساعدة نص خنزير.





هنا ، أخذنا مثالًا واحدًا واستخدمنا كلاً من UDF (وظائف محددة بواسطة المستخدم) ، أي إنشاء سلسلة بأحرف كبيرة وأخذ قيمة ورفع قوتها.

كيفية استخدام مكرر في جافا

تم وصف مجموعة البيانات أدناه والتي سنستخدمها في هذا المثال:



table

هدفنا هو كتابة حرف العمود الأول بأحرف كبيرة ورفع قوة العمود الثاني بقيمة العمود الثالث.

لنبدأ بكتابة كود جافا لكل UDF. كما يتعين علينا تكوين 4 JARs في مشروع java الخاص بنا لتجنب أخطاء الترجمة.
أولاً ، سننشئ برامج جافا ، وكلاهما مذكور أدناه:



Upper.java

import java.io.IOException import org.apache.pig.EvalFunc import org.apache.pig.data.Tuple import org.apache.pig.impl.util.WrappedIOExceptionSuppressWarnings ('depecation') public class توسع EvalFunc {public يطرح String exec (Tuple input) IOException {if (input == null || input.size () == 0) إرجاع فارغ حاول {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (استثناء هـ) {throw WrappedIOException.wrap ('تم اكتشاف استثناء معالجة صف الإدخال'، 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 extends EvalFunc {public Long exec (Tuple input) يطرح IOException {try { قاعدة int = (عدد صحيح) input.get (0) int exponent = (Integer) input.get (1) long result = 1 / * ربما ليست الطريقة الأكثر فاعلية ... * / لـ (int i = 0 i result) {// فاضنا. أعط تحذيرًا ، لكن لا تطرح استثناءً //. warn ('Overflow!'، PigWarning.TOO_LARGE_FOR_INT) // سيشير إرجاع القيمة الفارغة إلى Pig أننا فشلنا ولكن // نريد مواصلة التنفيذ. return null}} return result} catch (استثناء هـ) {// سيؤدي طرح استثناء إلى فشل المهمة. طرح IOException جديدًا ('حدث شيء سيء!' ، هـ)}}}

لإزالة أخطاء الترجمة ، يتعين علينا تكوين 4 جرار في مشروع جافا الخاص بنا.


انقر فوق الزر تنزيل لتنزيل JARs

[buttonleads form_title = 'Download Code' redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download؟ media_file_id = 76900193 course_id = 166 button_text = 'تنزيل JARs']

الآن ، نقوم بتصدير ملفات JAR لكل من أكواد جافا. يرجى التحقق من الخطوات أدناه لإنشاء JAR.

هنا ، أظهرنا لبرنامج واحد ، المضي قدمًا بنفس الطريقة في البرنامج التالي أيضًا.

بعد إنشاء ملفات JAR والملفات النصية ، قمنا بنقل جميع البيانات إلى مجموعة HDFS ، والتي تصورها الصور التالية:

في مجموعة البيانات الخاصة بنا ، الحقول مفصولة بفواصل (،).

كيفية تثبيت hadoop على لينكس

بعد نقل الملف ، قمنا بإنشاء برنامج نصي بامتداد .pig ووضعنا جميع الأوامر في ملف البرنامج النصي هذا.

الفرق بين تمرير القيمة وتمرير حسب المرجع في جافا

الآن في Terminal ، اكتب PIG متبوعًا باسم ملف البرنامج النصي الذي يظهر في الصورة التالية:

هنا ، هذا هو الإخراج لتشغيل البرنامج النصي الخنزير.

لديك سؤال لنا؟ يرجى ذكرها في قسم التعليقات وسنعاود الاتصال بك.

المنشورات ذات الصلة:

خطوات إنشاء UDF في Apache Pig

مقدمة إلى Apache Hive