2010-09-24 12 views
0

Je travaille sur un script Pig (mon premier) qui charge un gros fichier texte. Pour chaque enregistrement dans ce fichier texte, le contenu d'un champ doit être envoyé à un service RESTful pour traitement. Rien n'a besoin d'être évalué ou filtré. Capturez des données, envoyez-les et le script n'a plus besoin de rien.Appelez le service RESTful dans le script Pig

Je suppose qu'un UDF est requis pour ce genre de fonctionnalité, mais je suis assez nouveau pour Pig que je n'ai pas une image claire de ce que type de la fonction que je devrais construire. Ma meilleure estimation serait un Store Function puisque les données sont finalement stockées quelque part, mais je pense que la quantité de conjectures impliquées dans cette conclusion est plus élevée que je le voudrais.

Toute idée ou direction serait grandement appréciée.

Répondre

0

N'ayant jamais trouvé la moindre réponse à cette question, j'ai décidé de changer de direction. J'utilise Pig pour charger et analyser le fichier volumineux, mais je diffuse ensuite en continu chaque enregistrement qui me tient à cœur en PHP pour un traitement supplémentaire que Pig ne semble pas avoir la capacité de gérer proprement.

C'est still not complete (read: there's a great big, very unhappy bug in the mix), mais je pense que le concept est solide - il suffit de travailler sur les détails d'implémentation.

everything = LOAD 'categories.txt' USING PigStorage() AS (category:chararray); 
-- apply filter 
-- apply filter 
-- ... 
-- apply last filter 
ordered = ORDER filtered_categories BY category; 

streamed = STREAM limited THROUGH `php -nF process_categories.php`; 
DUMP streamed; 
2

Avez-vous eu un coup d'oeil à DBStorage qui fait quelque chose de similaire?

everything = LOAD 'categories.txt' USING PigStorage() AS (category:chararray); 
... 
STORE ordered INTO RestStorage('https://...');