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 consente di chiamare funzioni definite dall'utente (UDF) da 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 di funzioni UDF con Pig, consulta la Documentazione Pig relativa alla versione di Pig utilizzata.

Chiamata di file JAR da Pig

Puoi utilizzare file JAR personalizzati con Pig utilizzando il comando REGISTER nello script Pig. Il file JAR è un file system locale o remoto, ad esempio Amazon S3. Quando si esegue lo script Pig, Amazon EMR scarica il file JAR automaticamente nel nodo master e, successivamente, lo carica nella cache distribuita di Hadoop. In questo modo, il file JAR viene automaticamente utilizzato come necessario da tutte le istanze nel cluster.

Per utilizzare file JAR con Pig
  1. Carica i file JAR personalizzati in Amazon S3.

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

    REGISTER s3://mybucket/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 in s3://mybucket/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, utilizzare SSH per connettersi al nodo master ed eseguire la shell Grunt. Per ulteriori informazioni, consulta SSH nel nodo principale.

  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://mybucket/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://mybucket/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);