2

我目前正在学习 hadoop 框架和猪拉丁语。现在我有一个问题。

我有一个格式如下的数据集:

"long a, long b, char c, char d"

现在我想用 pig 读取这个数据集。负载和 PigStorage 功能没有问题..

bla = load 'data/examples/test' as (a:long, b:long, c:chararray, d:chararray);

我的下一步是,我想在每一行上比较 a 和 b。如果 a 大于 b 没关系。如果b大于a,我不想用b切换a,这样较高的值总是我数据集的第一个值......

这可能吗?在Java中,我可以用一个简单的“compareTo”来做到这一点......

对不起,我的英语不好 :-)

4

1 回答 1

2
blb = FOREACH bla GENERATE ((a < b) ? b : a), ((a < b) ? a : b), c, d;

Pig 中的此运算符称为bincond。第一个说,如果a小于b,则输出b。第二个说,如果a小于b,则输出a。请注意,当a大于时b,它会输出相反的结果。

于 2012-09-02T20:48:23.730 回答