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:
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