我在一列中有一个空值的数据集:
price time id
1 12:00:00 id1
10 12:00:00 id2
NULL 12:05:00 id1
NULL 12:05:00 id2
NULL 12:10:00 id2
2 12:10:00 id1
3 12:15:00 id1
NULL 12:20:00 id1
NULL 12:25:00 id1
4 12:30:00 id1
我想为pig或hive中的每个id/时间添加一个值为null的行,该行具有先前已知的行值。
所以,输出应该是:
price time id
1 12:00:00 id1
10 12:00:00 id2
**1** 12:05:00 id1
**10** 12:05:00 id2
**10** 12:10:00 id2
2 12:10:00 id1
3 12:15:00 id1
**3** 12:20:00 id1
**3** 12:25:00 id1
4 12:30:00 id1
非常感谢。
编辑:这是我在hive中运行的内容:
Select price,time, id,last_value(price,true) over (partition by id order by time) as LatestPrice from table;
对于某些行(1000行),它工作得很好,但是对于一个更大的集(24m行),在完成100%mapper和100%reducer之后,作业仍然从上一天开始运行。有什么建议吗?
1条答案
按热度按时间wecizke31#
你可以试试这样的。
其思想是将空价格记录从非空价格记录中分离出来,然后在非空价格记录中寻找一个分录的每个空价格记录id。在为每个空价格分录选取价格之后,我们将该数据与非空价格数据连接起来。