使用Filter从Pig Script生成单个输出

时间:2014-05-16 05:47:51

标签: hadoop mapreduce apache-pig

我有一个简单的PIG脚本,它只使用FILTER命令。它看起来像这样......

--sample_script.pig
some_data = load './a_file' as (col1:chararray, col2:chararray);
contains_ = filter some_data by (col2 == '1') OR (col2 == '2');
store contains_ into './a_new_file';

当我运行此脚本时,它会输出一个文件夹a_new_file,其中包含3个文件part-m-00000part-m-00001_SUCCESS。从我可以收集到的,我编写脚本的方式不需要减少阶段。有没有不同的方法来写这个,所以这个脚本只会输出一个文件?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以在脚本本身中设置缩减器数量

--sample_script.pig
set default_parallel 1;
some_data = load './a_file' as (col1:chararray, col2:chararray);
contains_ = filter some_data by (col2 == '1') OR (col2 == '2');
store contains_ into './a_new_file';

OR

您可以合并small files

答案 1 :(得分:0)

您可以通过以下方式单独使用PARALLEL 1进行过滤

contains = filter some_data by (col2 == '1') OR (col2 == '2') PARALLEL 1;

这将只创建一个零件文件