通过PHP的Pig流

通过PHP的Pig流,php,hadoop,apache-pig,Php,Hadoop,Apache Pig,我有一个Pig脚本,目前在本地模式下运行,它处理一个包含类别列表的大型文件: /root/level1/level2/level3 /root/level1/level2/level3/level4 ... 我需要通过调用存储过程将它们中的每一个插入到现有数据库中。因为我对Pig还不熟悉,而且UDF接口有点让人望而生畏,所以我正试图通过PHP脚本流式传输文件内容来完成一些事情 不过,我发现PHP脚本只看到我要通过的类别行的一半。更准确地说,我看到了ceil pig_categories/2返回

我有一个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;
有没有想过我错过了什么。我已经阅读了Pig参考手册一段时间了,似乎没有太多关于PHP脚本流的信息。我还尝试了IRC上的hadoop频道,但没有成功。任何指导都将不胜感激

谢谢

更新

很明显,这与EOL有关。如果我将PHP脚本从使用fgets改为stream_get_行,那么我会返回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)
()

在结果集中,应该有第一项艺术。正在接近,但仍有一些差距需要弥合。

因此,这是其中一个空格很重要的例子。我的开场白前面有一条空行,所以这是其中一个空格很重要的例子。我的开场白前有一条空线