Chiamata di funzioni UDF (definite dall'utente) da Pig - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Chiamata di funzioni UDF (definite dall'utente) da Pig

Pig offre la possibilità di richiamare funzioni definite dall'utente (UDFs) dall'interno degli script Pig. Puoi eseguire questa operazione per implementare l'elaborazione personalizzata da utilizzare negli script Pig. I linguaggi attualmente supportati sono Java, Python/Jython e JavaScript (sebbene JavaScript il supporto sia ancora sperimentale).

Le seguenti sezioni descrivono come registrare le tue funzioni con Pig per chiamarle dalla shell Pig o dagli script Pig. Per ulteriori informazioni sull'utilizzo UDFs con Pig, consulta la documentazione di Pig per la tua versione di Pig.

Chiama i file JAR da Pig

Puoi usare JAR file personalizzati con Pig usando il REGISTER comando nello script di Pig. Il JAR file è un file system locale o remoto come Amazon S3. Quando lo script Pig viene eseguito, Amazon EMR scarica automaticamente il JAR file sul nodo master e quindi lo carica nella cache distribuita JAR di Hadoop. In questo modo, il JAR file viene utilizzato automaticamente, se necessario, da tutte le istanze del cluster.

Per usare JAR i file con Pig
  1. Carica il tuo JAR file personalizzato in Amazon S3.

  2. Usa il REGISTER comando nello script Pig per specificare il bucket su Amazon S3 del file personalizzato. JAR

    REGISTER s3://amzn-s3-demo-bucket/path/mycustomjar.jar;

Chiamata di script Python/Jython da Pig

Puoi registrare script Python con Pig e quindi chiamare funzioni in tali script dalla shell Pig o da uno script Pig. A questo scopo, devi specificare il percorso dello script con la parola chiave register.

Poiché Pig è scritto in Java, utilizza il modulo di gestione di script Jython per analizzare script Python. Per ulteriori informazioni su Jython, visita il sito Web all'indirizzo http://www.jython.org/.

Per chiamare uno script Python/Jython da Pig
  1. Scrivi uno script Python e carica lo script in un percorso in Amazon S3. Questo deve essere un bucket appartenente allo stesso account che crea il cluster Pig o che dispone delle autorizzazioni impostate affinché l'account che ha creato il cluster possa accedervi. In questo esempio, lo script viene caricato su s3://amzn-s3-demo -. bucket/pig/python

  2. Avviare un cluster Pig. Se si accede a Pig dalla shell Grunt, eseguire un cluster interattivo. Se si eseguono comandi Pig da uno script, avviare un cluster Pig con script. Questo esempio avvia un cluster interattivo. Per ulteriori informazioni su come creare un cluster Pig, consulta Invio di lavoro Pig.

  3. Per un cluster interattivo, usalo SSH per connetterti al nodo master ed eseguire la shell Grunt. Per ulteriori informazioni, consulta SSHInto the master node.

  4. Eseguire la shell Grunt per Pig digitando pig nella riga di comando:

    pig
  5. Registra la libreria Jython e lo script Python con Pig utilizzando la parola chiave register nel prompt dei comandi Grunt, come illustrato nel comando seguente, in cui è necessario specificare il percorso dello script in Amazon S3:

    grunt> register 'lib/jython.jar'; grunt> register 's3://amzn-s3-demo-bucket/pig/python/myscript.py' using jython as myfunctions;
  6. Caricare i dati di input. L'esempio seguente carica l'input da un percorso Amazon S3:

    grunt> input = load 's3://amzn-s3-demo-bucket/input/data.txt' using TextLoader as (line:chararray);
  7. A questo punto, è possibile chiamare le funzioni nello script da Pig facendo riferimento alle stesse mediante myfunctions:

    grunt> output=foreach input generate myfunctions.myfunction($1);