通过抛出错误对组内记录进行抽样

时间:2014-11-14 17:30:02

标签: hadoop group-by apache-pig sampling

示例数据:(tsv file:sampl)

  

1 a

     

2 b

     

3 c

raw= load 'sampl' using PigStorage() as (f1:chararray,f2:chararray);
grouped = group raw by f1;

describe grouped;
fields = foreach grouped {
    x = sample raw 1;

    generate x;
}

当我运行时,我在第x = sample raw 1;行遇到错误 ERROR 1200:输入'raw'不匹配,期望LEFT_PAREN

分组记录不允许抽样吗?

1 个答案:

答案 0 :(得分:0)

您不能在嵌套块中使用'sample'命令。这在猪中不受支持 在嵌套块中只允许少数操作操作,如( CROSS,DISTINCT,FILTER,FOREACH,LIMIT和ORDER BY )。您必须在嵌套块之外使用sample命令。

另一个问题是,您使用默认分隔符即选项卡加载输入数据。但是您的输入数据是用空格分隔的,因此您需要像这样更改脚本

raw= load 'sampl' using PigStorage(' ') as (f1:chararray,f2:chararray);