我在使用时遇到一个问题 Limit
在Pig身上。
结果 Limit
已排序,但我不希望结果被排序。
从网站上的例子来看:
A = LOAD 'data' AS (a1:int,a2:int,a3:int);
DUMP A;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
(7,2,5)
(8,4,3)
使用 Limit
```
X = LIMIT A 3;
DUMP X;
(1,2,3)
(4,3,3)
(7,2,5)
有没有可能显示前三行而不在列表中排序?
(1,2,3)
(4,2,1)
(8,3,4)
我的代码如下:
A = LOAD '$input';
B = foreach A generate $s_field;
C = FILTER B BY $pattern;
D = FOREACH C {
topnresult = LIMIT B $lines;
GENERATE FLATTEN(topnresult);
}
dump D;
非常感谢你。
1条答案
按热度按时间jucafojl1#
默认情况下,limit将在内部执行order命令,然后执行limit命令,因此显然您将得到排序的列表。有很多方法可以解决这个问题,其中一个选择是
输入文件
Pig手稿:
输出:
选项2:
输出:
更新:解决方案1
解决方案2:
我已经用下面的命令行测试了这个解决方案,它运行良好