Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Appel de fonctions définies par l'utilisateur à partir de Pig
Pig permet d'appeler des fonctions définies par l'utilisateur (UDFs) depuis les scripts Pig. Vous pouvez le faire pour implémenter un traitement personnalisé à utiliser dans vos scripts Pig. Les langages actuellement pris en charge sont Java, Python/Jython et JavaScript (bien que le JavaScript support soit encore expérimental).
Les sections suivantes expliquent comment enregistrer vos fonctions avec Pig afin de pouvoir les appeler à partir du shell Pig ou de scripts Pig. Pour plus d'informations sur l'utilisation UDFs de Pig, consultez la documentation de Pig
JARFichiers d'appels depuis Pig
Vous pouvez utiliser des JAR fichiers personnalisés avec Pig en utilisant la REGISTER
commande de votre script Pig. Il s'agit d'un JAR fichier local ou d'un système de fichiers distant tel qu'Amazon S3. Lorsque le script Pig s'exécute, Amazon EMR télécharge le JAR fichier automatiquement sur le nœud principal, puis le télécharge dans le JAR cache distribué Hadoop. Ainsi, le JAR fichier est automatiquement utilisé selon les besoins par toutes les instances du cluster.
Pour utiliser des JAR fichiers avec Pig
-
Chargez votre JAR fichier personnalisé dans Amazon S3.
-
Utilisez la
REGISTER
commande de votre script Pig pour spécifier le compartiment du JAR fichier personnalisé sur Amazon S3.REGISTER
s3://amzn-s3-demo-bucket/path/mycustomjar.jar
;
Appel de scripts Python/Jython à partir de Pig
Vous pouvez enregistrer des scripts Python avec Pig, puis appeler des fonctions dans ces scripts à partir du shell Pig ou dans un script Pig. Pour cela, vous devez spécifier l'emplacement du script avec le mot clé register
.
Etant donné que Pig est écrit en Java, il utilise le moteur de script Jython pour analyser les scripts Python. Pour plus d'informations sur Jython, accédez à http://www.jython.org/
Pour appeler un script Python/Jython à partir de Pig
-
Écrivez un script Python et chargez-le dans un emplacement sur Amazon S3. Il doit s'agir d'un compartiment appartenant au même compte que celui qui crée le cluster Pig, ou qui dispose des autorisations définies pour que le compte qui a créé le cluster puisse y accéder. Dans cet exemple, le script est chargé sur s3://amzn-s3-demo -bucket/pig/python.
-
Démarrez un cluster Pig. Si vous accédez à Pig à partir du shell Grunt, exécutez un cluster interactif. Si vous exécutez les commandes Pig à partir d'un script, démarrez un cluster Pig scripté. Cet exemple démarre un cluster interactif. Pour plus d'informations sur la création d'un cluster Pig, consultez Soumission de travail Pig.
-
Pour un cluster interactif, utilisez-le SSH pour vous connecter au nœud principal et exécuter le shell Grunt. Pour plus d'informations, reportez-vous à la section SSHinto the master node.
-
Exécutez le shell Grunt pour Pig en tapant
pig
dans la ligne de commande :pig
-
Enregistrez la bibliothèque Jython et votre script Python avec Pig à l'aide du mot clé
register
à l'invite de commande Grunt, comme illustré dans la commande suivante, dans laquelle vous devez spécifier l'emplacement de votre script dans Amazon S3 :grunt> register 'lib/jython.jar'; grunt> register '
s3://amzn-s3-demo-bucket/pig/python/myscript.py
' using jython as myfunctions; -
Chargez les données d'entrée. L'exemple suivant charge l'entrée à partir d'un emplacement Amazon S3 :
grunt> input = load '
s3://amzn-s3-demo-bucket/input/data.txt
' using TextLoader as (line:chararray); -
Vous pouvez désormais appeler des fonctions dans votre script à partir de Pig en y faisant référence à l'aide de
myfunctions
:grunt> output=foreach input generate myfunctions.myfunction($1);