UDF חזיר אפאצ'י: חלק 3 - פונקציות חנות



פוסט זה מתאר אודות Apache Pig UDF - פונקציות חנות. (Apache חזיר UDF: חלק 3). התבונן בפונקציות החנות של Apache Pig UDF.

בכיתה מופשטת StoreFunc יש את השיטות העיקריות לאחסון נתונים ולרוב מקרי השימוש, די יהיה בהרחבתם. יש ממשק אופציונלי שניתן ליישם כדי להשיג פונקציונליות מורחבת:





StoreMetadata

לממשק זה יש שיטות לאינטראקציה עם מערכות מטא נתונים לאחסון סכמות וסטטיסטיקה. ממשק זה הוא אופציונלי ויש ליישמו רק אם יש לשמור את המטא נתונים.

השיטות שיש לבטל ב- StoreFunc מוסברות להלן:



מה זה מתורגמן בג'אווה
  • getOutputFormat ():

    שיטה זו תיקרא על ידי חזיר כדי לקבל את OutputFormat המשמש את Storer. השיטות ב- OutputFormat יקראו על ידי חזיר באותו אופן ובאותו הקשר כמו על ידי Hadoop בתוכנית Java להפחתת מפה. אם OutputFormat הוא אחד הארוז של Hadoop, היישום צריך להשתמש בממשק ה- API החדש מבוסס תחת org.apache.hadoop.mapreduce. אם מדובר ב- OutputFormat מותאם אישית, יש ליישם אותו באמצעות ה- API החדש תחת org.apache.hadoop.mapreduce. שיטת checkOutputSpecs () של OutputFormat תתקשר על ידי חזיר כדי לבדוק את מיקום הפלט מלפנים. שיטה זו תיקרא גם כחלק מרצף השיחות של Hadoop עם הפעלת העבודה. אז יישומים צריכים להבטיח שניתן לקרוא לשיטה זו מספר פעמים ללא תופעות לוואי לא עקביות.

  • setStoreLocation ():

    שיטה זו נקראת על ידי חזיר כדי לתקשר את מיקום החנות למחסן. על המחסן להשתמש בשיטה זו כדי להעביר את אותו מידע ל- OutputFormat הבסיסי. שיטה זו נקראת מספר פעמים על ידי חזיר. ביישומים יש לשים לב ששיטה זו נקראת מספר רב של פעמים והיא צריכה לוודא שאין תופעות לוואי לא עקביות בגלל השיחות המרובות.

  • preparToWrite ():

    ב- API החדש, כתיבת הנתונים היא באמצעות OutputFormat המסופק על ידי StoreFunc. ב- preparToWrite () ה- RecordWriter המשויך ל- OutputFormat שמספק StoreFunc מועבר ל- StoreFunc. לאחר מכן ניתן להשתמש ב- RecordWriter על ידי ההטמעה ב- putNext () כדי לכתוב tuple המייצג תיעוד של נתונים באופן המצופה על ידי RecordWriter.

  • putNext ():

    המשמעות של putNext () לא השתנתה והיא נקראת על ידי זמן ריצה של חזיר כדי לכתוב את צמרת הנתונים הבאה - בממשק ה- API החדש, זו השיטה שבה היישום ישתמש ב- RecordWriter הבסיסי כדי לכתוב את ה- Tuple החוצה.

יישומי ברירת מחדל ב- StoreFunc:

  • setStoreFuncUDFContextSignature ():

    שיטה זו תיקרא על ידי חזיר הן בקצה הקדמי והן בקצה האחורי להעביר חתימה ייחודית ל- Storer. ניתן להשתמש בחתימה כדי לאחסן כל מידע ב- UDFContext אותו השומר צריך לאחסן בין קריאות שיטות שונות בקצה ובקצה האחורי. ליישום ברירת המחדל ב- StoreFunc יש גוף ריק. שיטה זו תיקרא לפני כל שיטה אחרת.

  • relToAbsPathForStoreLocation ():

    זמן ריצה חזיר יקרא לשיטה זו כדי לאפשר לחנות להמיר מיקום חנות יחסי למיקום מוחלט. יישום מסופק ב- StoreFunc המטפל בכך עבור מיקומים מבוססי FileSystem.

  • checkSchema ():

    פונקציה של חנות צריכה ליישם פונקציה זו כדי לבדוק שסכמה נתונה המתארת ​​את הנתונים שייכתבו מקובלת עליה. ליישום ברירת המחדל ב- StoreFunc יש גוף ריק. שיטה זו תיקרא לפני כל קריאה ל- setStoreLocation ().

יישום לדוגמא:

יישום המאגר בדוגמה, הוא מאגר לנתוני טקסט עם תווית קו כמו '
'ו-' 'כמפריד שדה ברירת מחדל (שניתן לעקוף אותו על ידי העברת תווית שדה שונה בבנאי) - זה דומה למחסן PigStorage הנוכחי בחזיר. היישום משתמש ב- OutputFormat הנתמך ב- Hadoop - TextOutputFormat כ- OutputFormat הבסיסי.

מחלקה ציבורית SimpleTextStorer מרחיב את StoreFunc {כותב RecordWriter מוגן = null בתים פרטיים fieldDel = '' סופי סטטי פרטי BUFFER_SIZE = 1024 סופי סטטי פרטי מחרוזת UTF8 = 'UTF-8' PigStorage ציבורי () {} ציבורי אחסון ציבורי (מפריד מחרוזת) {{זה (( ) אם (מפריד.אורך () == 1) {this.fieldDel = (בתים) מפריד.צ'אט (0)} אחרת אם (מפריד.אורך ()> 1 מפנה.צ'ארט (0) == '') {מתג ( delimiter.charAt (1)) {case 't': this.fieldDel = (byte) 'case break' x ': fieldDel = Integer.valueOf (delimiter.substring (2), 16). byteValue () case break' u ': this.fieldDel = Integer.valueOf (delimiter.substring (2)). byteValue () הפסקה ברירת מחדל: לזרוק RuntimeException חדש (' מפריד לא ידוע '+ מפריד)}} אחר {לזרוק RuntimeException חדש (' מפריד PigStorage חייב להיות תו בודד ')}} ByteArrayOutputStream mOut = ByteArrayOutputStream חדש (BUFFER_SIZE) @ Override public void putNext (Tuple f) זורק IOException {int sz = f.size () עבור (int i = 0 i

יש לך שאלה עבורנו? אנא הזכר אותם בסעיף ההערות ונחזור אליך.

פוסטים קשורים:



עובר בהתייחסות בג'אווה

אפאצ'י חזיר UDF: חלק 2
אפאצ'י חזיר UDF: חלק 1