我在使用apachepig添加行号时遇到了一个问题。问题是我有一个str\u id列,我想为str\u id中的数据添加一个row\u num列,它是str\u id的行号。
例如,以下是输入:
STR_ID
------------
3D64B18BC842
BAECEFA8EFB6
346B13E4E240
6D8A9D0249B4
9FD024AA52BA
如何获得如下输出:
STR_ID | ROW_NUM
----------------------------
3D64B18BC842 | 1
BAECEFA8EFB6 | 2
346B13E4E240 | 3
6D8A9D0249B4 | 4
9FD024AA52BA | 5
使用Pig或Hive的答案是可以接受的。谢谢您。
8条答案
按热度按时间gpnt7bae1#
对于那些想了解pig的人,我发现(目前)最好的方法是编写自己的udf。我想在一个包中为元组添加行号。这是代码:
此代码仅供参考。可能不是防错的。
bd1hkmkf2#
facebook发布了包括numberrows在内的许多hive自定义项。根据您的配置单元版本(我相信是0.8),您可能需要向类添加一个属性(stateful=true)。
r7xajy2e3#
Hive溶液-
或者,如果您想让行按str\u id升序-
dvtswwa34#
从版本0.11开始,hive支持lead、lag和row number等分析函数
https://issues.apache.org/jira/browse/hive-896
6yt4nkrj5#
就我的例子来说,这是一个很好的答案
第一步。define row\ u sequence()函数以处理自动增加id
第二步。插入唯一id字符串(&S)
gzszwxb46#
pig0.11引入了一个秩运算符,可用于此目的。
pgky5nke7#
在Hive中:
查询
输出
2w3kk1z58#
在Hive中: