Rob*_*son 1 php hadoop apache-pig
我有一个Pig脚本 - 当前以本地模式运行 - 处理包含类别列表的大文件:
/root/level1/level2/level3
/root/level1/level2/level3/level4
...
Run Code Online (Sandbox Code Playgroud)
我需要通过调用存储过程将每个插入到现有数据库中.因为我是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;
Run Code Online (Sandbox Code Playgroud)
对我所缺少的任何想法.我现在已经倾倒了猪参考手册一段时间,似乎没有太多关于通过PHP脚本流式传输的信息.我也试过IRC上的#hadoop频道无济于事.任何指导都将非常感谢.
谢谢.
UPDATE
很明显,这与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)
()
Run Code Online (Sandbox Code Playgroud)
在该结果集中,应该有第一项(Arts).关闭,但仍有一些差距要关闭.