0

有没有办法在 Pig 中生成“列”滞后或差异?这是我正在尝试做的一个示例,从 R 转录而来:

         Value           Value.Diff
1        0.209                NA
2        0.198            -0.011
3        0.187            -0.011
4        0.176            -0.011
5        0.168            -0.008
6        0.159            -0.009

我意识到考虑到 Pig 数据存储的(大概)分布式特性,这可能会很棘手,但考虑到 Pig 0.11+ 允许您对元组进行排名,我认为这可能是可能的。

4

1 回答 1

1

像这样的东西应该工作:

values = rank values by some_field;
values = foreach values generate $0 as this_rank, $0 - 1 as prev_rank, value;
copy   = foreach values generate *;
pairs  = join values by this_rank, copy by prev_rank;
diffs  = foreach pairs generate this_rank, values::value - copy::value as diff;
于 2013-11-12T19:32:06.933 回答