Question

J'ai un script Pig - en cours d'exécution en mode local - qui traite un fichier contenant une liste énorme de catégories:

/root/level1/level2/level3
/root/level1/level2/level3/level4
...

Je dois insérer chacun de ceux-ci dans une base de données existante en appelant une procédure stockée. Parce que je suis nouveau Pig et l'interface UDF est un peu intimidant, je suis en train de faire quelque chose en streaming le contenu du fichier via un script PHP.

Je trouve que le script PHP ne voit que la moitié des lignes de catégorie je passe à travers elle, cependant. Plus précisément, je vois un enregistrement retourné pour ceil( pig_categories/2 ). Une limite de 15 produira 8 entrées après le streaming par le script PHP -. Le dernier sera vide

-- Pig script snippet
ordered  = ORDER mappable_categories BY category;
limited  = LIMIT ordered 20;

categories = FOREACH limited GENERATE category;
DUMP categories; -- Displays all 20 categories

streamed = STREAM limited THROUGH `php -nF categorize.php`;
DUMP streamed; -- Displays 10 categories

# categorize.php
$category = fgets( STDIN );
echo $category;

Les réflexions sur ce que je suis absent. Je suis sur le manuel versais de référence de porc pendant un certain temps maintenant et il ne semble pas être beaucoup d'informations en rapport avec le streaming via un script PHP. J'ai aussi essayé le canal #hadoop sur IRC en vain. Toute orientation serait très apprécié.

Merci.

UPDATE

Il devient évident que cela est lié EOL. Si je change le script PHP d'utiliser fgets() à stream_get_line(), je reçois 10 articles, mais le dossier qui devrait être le premier est sautée et il y a un enregistrement vide de fuite qui obtient affiché.

(Arts/Animation)
(Arts/Animation/Anime)
(Arts/Animation/Anime/Characters)
(Arts/Animation/Anime/Clubs_and_Organizations)
(Arts/Animation/Anime/Collectibles)
(Arts/Animation/Anime/Collectibles/Cels)
(Arts/Animation/Anime/Collectibles/Models_and_Figures)
(Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures)
(Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures/Gundam)
()

Dans ce jeu de résultats, il devrait y avoir un premier élément de (Arts). La fermeture, mais il y a encore un certain écart à combler.

Était-ce utile?

La solution

Il se trouve que c'est l'un de ces cas où blancs Questions diverses. J'ai eu une ligne vide devant mon étiquette <?php d'ouverture. Une fois que je serrai tous ça, tout a navigué à travers et produit comme prévu. / punitives headslap /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top