Programació Pig: Apache Pig Script amb UDF en mode HDFS



Programació Pig: Apache Pig Script amb UDF en mode HDFS. Aquí teniu una publicació de bloc per executar un script Apache Pig amb UDF en mode HDFS ...

A les entrades anteriors del bloc vam veure com començar Programació i programació de porcs . Hem vist els passos per escriure un Script Pig en mode HDFS i sense UDF. A la tercera part d'aquesta sèrie revisarem els passos per escriure un guió Pig UDF en mode HDFS .

Hem explicat com implementar Pig UDF creant funcions integrades per explicar la funcionalitat de la funció incorporada Pig. Per a una millor explicació, hem pres dues funcions integrades. Ho hem fet amb l'ajuda d'un guió de porc.





Aquí hem pres un exemple i hem utilitzat tant l’UDF (funcions definides per l’usuari), és a dir, fer una cadena en majúscules i agafar un valor i augmentar el seu poder.

A continuació es mostra el conjunt de dades que utilitzarem en aquest exemple:



table

El nostre objectiu és fer la primera lletra de la columna en majúscules i augmentar la potència de la 2a columna amb el valor de la 3a columna.

Comencem per escriure el codi Java per a cada UDF. També hem de configurar 4 JAR al nostre projecte Java per evitar els errors de compilació.
En primer lloc, crearem programes java, tots dos es donen a continuació:



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 extends EvalFunc {public L'execució de cadena (entrada de tuples) genera IOException {if (input == null || input.size () == 0) return null try {String str = (String) input.get (0) str = str.toUpperCase () return str} catch (Exception e) {throw WrappedIOException.wrap ('S'ha capturat l'excepció processant fila d'entrada', 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 (input Tuple) throws IOException {try { int base = (enter) input.get (0) int exponent = (enter) input.get (1) resultat llarg = 1 / * Probablement no sigui el mètode més eficient ... * / per (int i = 0 i result) {// Hem desbordat. Doneu un avís, però no llanceu cap // excepció. warn ('Desbordament!', PigWarning.TOO_LARGE_FOR_INT) // El retorn nul indicarà a Pig que hem fallat però // volem continuar l'execució. return null}} return result} catch (Excepció e) {// Si feu una excepció, la tasca fallarà. llança una nova IOException ('Alguna cosa dolenta ha passat!', e)}}}

Per eliminar els errors de compilació, hem de configurar 4 POTS al nostre projecte Java.


Feu clic al botó Baixa per descarregar els JAR

[buttonleads form_title = 'Codi de descàrrega' redirect_url = https: //edureka.wistia.com/medias/wtboe1hmkr/download? media_file_id = 76900193 course_id = 166 button_text = 'Descarregar JARs']

Ara, exportem fitxers JAR tant per als codis Java. Consulteu els passos següents per a la creació de JAR.

Aquí, hem mostrat per a un programa, procediu de la mateixa manera al programa següent.

quin mètode de classe d'escàner llegeix una cadena?

Després de crear els fitxers JAR i de text, hem mogut totes les dades al clúster HDFS, que es mostra amb les imatges següents:

Al nostre conjunt de dades, els camps estan separats per comes (,).

avantatges i desavantatges de Python

Després de moure el fitxer, hem creat un script amb l'extensió .pig i hem posat totes les ordres en aquest fitxer de script.

Ara al terminal, escriviu PIG seguit del nom del fitxer de script que es mostra a la imatge següent:

Aquí, aquesta és la sortida per executar l’escriptura pig.

Tens alguna pregunta? Esmenteu-los a la secció de comentaris i us respondrem.

Articles Relacionats:

Passos per crear UDF a Apache Pig

Introducció a Apache Hive