我正在运行一个猪脚本,它会压扁一个包,对其进行过滤,然后将它组合在一起,以便我可以将它传递给UDF。问题是,当我需要ASC顺序时,最后一个日期[在最后一个值之前]是DESC顺序
EX:
((RRRRRRR#,T2,19840101011),
{
(RRRRRRR#,T2,19840101011,3.0,4.25,01-01-2014,31-03-2014,01-03-2014,20140101197),
(RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-02-2014,20140101197),
(RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-01-2014,20140101197)
}) //^ REVERSED ORDER
我需要什么:
((RRRRRRR#,T2,19840101011),
{
(RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-01-2014,20140101197),
(RRRRRRR#,T2,19840101011,3.0,3.75,01-01-2014,31-03-2014,01-02-2014,20140101197),
(RRRRRRR#,T2,19840101011,3.0,4.25,01-01-2014,31-03-2014,01-03-2014,20140101197)
}) //^ NEED THIS ORDER
有没有办法在袋子里订购元组?如果没有,我怎么能阻止GROUP命令这样排序?
答案 0 :(得分:1)
根据定义,袋子是无序的。因此,您不能保证您所做的任何转换都会保留顺序。但是,如果在特定步骤中您需要保证订购,则可以在嵌套ORDER BY
内使用FOREACH
:
b = FOREACH a {
field2_ord = ORDER field2 BY date;
GENERATE
field1,
field2_ord;
};