我有一个具有此架构的表:
(id: chararray, ts: long, data: chararray)
其中ts代表时间戳,用unix时间存储;
因为数据将更新,如果发生更新,ts将被修改,所以id不会更改。但所有这些旧记录和新记录都将存储在hdfs中。
我只想看看最新的数据,所以我写了Pig代码如下:
grp = GROUP table BY id;
rst = FOREACH grp {
latest = FILTER table BY ts == MAX(table.ts);
GENERATE latest.id AS id,
latest.data AS data;
}
但似乎Pig代码没有工作,所以有人可以给我一个建议,使这个代码的工作?
2条答案
按热度按时间4ktjp1zp1#
我不知道为什么这不起作用,但是写一个udf来实现这一点也不难。只需输入一袋元组,循环它们,并返回时间戳最大的元组。然后你可以做:
mefy6pfw2#
你试过点菜吗
ts
按降序排列?