Pig-programmering: Apache Pig-script met UDF in HDFS-modus



Pig-programmering: Apache Pig-script met UDF in HDFS-modus. Hier is een blogpost om Apache Pig-script uit te voeren met UDF in HDFS-modus ...

In de vorige blogposts hebben we gezien hoe je ermee moet beginnen Varkensprogrammering en scripting . We hebben de stappen gezien om een Pig Script in HDFS-modus en zonder UDF. In het derde deel van deze serie zullen we de stappen bespreken om een ​​Pig-script mee te schrijven UDF in HDFS-modus .

We hebben uitgelegd hoe Pig UDF geïmplementeerd kan worden door ingebouwde functies te creëren om de functionaliteit van de ingebouwde Pig-functie uit te leggen. Voor een betere uitleg hebben we twee ingebouwde functies genomen. Dit hebben we gedaan met behulp van een varkensscript.





Hier hebben we een voorbeeld genomen en we hebben zowel de UDF (door de gebruiker gedefinieerde functies) gebruikt, d.w.z. een string in hoofdletters maken en een waarde nemen en de kracht ervan verhogen.

Hieronder staat de dataset die we in dit voorbeeld gaan gebruiken:



table

hoe atom voor python te gebruiken

Ons doel is om de eerste kolomletter in hoofdletters te maken en de kracht van de 2e kolom te verhogen met de waarde van de 3e kolom.

Laten we beginnen met het schrijven van de Java-code voor elke UDF. We moeten ook 4 JAR's configureren in ons Java-project om compilatiefouten te vermijden.
Eerst zullen we Java-programma's maken, beide worden hieronder weergegeven:



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 breidt EvalFunc {public uit String exec (Tuple-invoer) gooit IOException {if (input == null || input.size () == 0) retourneer null probeer {String str = (String) input.get (0) str = str.toUpperCase () retour str} catch (uitzondering e) {throw WrappedIOException.wrap ('Gevangen uitzondering verwerken invoerrij', 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 verlengt EvalFunc {public Long exec (Tuple input) gooit IOException {try { int base = (geheel getal) input.get (0) int exponent = (geheel getal) input.get (1) lang resultaat = 1 / * Waarschijnlijk niet de meest efficiënte methode ... * / for (int i = 0 i resultaat) {// We liepen over. Geef een waarschuwing, maar gooi geen // uitzondering. waarsch ('Overflow!', PigWarning.TOO_LARGE_FOR_INT) // Het retourneren van null geeft aan Pig aan dat we hebben gefaald, maar // we willen doorgaan met de uitvoering. return null}} return result} catch (uitzondering e) {// Als een uitzondering wordt gegenereerd, zal de taak mislukken. gooi nieuwe IOException ('Er is iets ergs gebeurd!', e)}}}

Om compilatiefouten te verwijderen, moeten we configureren 4 JARs in ons java-project.


Klik op de downloadknop om de JAR's te downloaden

[buttonleads form_title = 'Downloadcode' redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = 'JARs downloaden']

Nu exporteren we JAR-bestanden voor beide Java-codes. Controleer de onderstaande stappen voor het maken van JAR.

Hier hebben we voor het ene programma laten zien, ga ook in het volgende programma op dezelfde manier verder.

Nadat we de JAR's en tekstbestanden hebben gemaakt, hebben we alle gegevens naar het HDFS-cluster verplaatst, wat wordt weergegeven door de volgende afbeeldingen:

In onze dataset worden velden door komma's (,) gescheiden.

Nadat we het bestand hebben verplaatst, hebben we een script met de extensie .pig gemaakt en alle opdrachten in dat scriptbestand geplaatst.

Typ nu in terminal PIG gevolgd door de naam van het scriptbestand dat wordt weergegeven in de volgende afbeelding:

Hier is dit de uitvoer voor het uitvoeren van het pig-script.

Heeft u een vraag voor ons? Vermeld ze in het opmerkingengedeelte en we nemen contact met u op.

Gerelateerde berichten:

Stappen om UDF te maken in Apache Pig

Inleiding tot Apache Hive