猪的流通过PHP

时间:2010-09-28 17:59:14

标签: php hadoop apache-pig

我有一个Pig脚本 - 当前以本地模式运行 - 处理包含类别列表的大文件:

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

我需要通过调用存储过程将每个插入到现有数据库中。因为我是Pig的新手并且UDF界面有点令人生畏,我试图通过PHP脚本流式传输文件的内容来完成某些事情。

我发现PHP脚本只能看到我通过它的一半类别行。更确切地说,我看到ceil( pig_categories/2 )返回的记录。

表示,在通过PHP脚本流式传输后,限制为15将产生8个条目。

-- 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;

对我缺少的任何想法。我现在已经倾倒了猪参考手册一段时间,似乎没有太多关于通过PHP脚本流式传输的信息。我也试过IRC上的#hadoop频道无济于事。任何指导都将非常感谢。

感谢。

更新

很明显,这与EOL有关。如果我将PHP脚本从使用fgets()更改为stream_get_line(),那么我会返回10个项目,但是应该首先删除记录,并显示一个显示的尾随空记录。

(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)
()

在该结果集中,应该有(Arts)的第一项。关闭,但仍有一些差距要关闭。

1 个答案:

答案 0 :(得分:5)

事实证明,这是空白问题的一个例子。我的开场<?php标记前面有一个空行。一旦我收紧所有这些,一切都顺利通过并按预期生产。 / punitive headlap /