在hive表中聚合有序行

时间:2016-09-07 13:17:09

标签: hadoop hive aggregate analytics rows

我在配置单元中有一个表格,其中包含4列:

row_id| user_id|product_id| duration
1       1       product1    3
2       1       product1    1
3       1       product2    6
4       1       product3    2
5       1       product1    4
6       1       product4    3
7       1       product4    5
8       1       product4    7
9       2       product4    3
10      2       product4    6

我想为每个用户汇总相同产品的行,只有当结果按顺序

时,才会计算持续时间并计算点击次数
row_id| user_id|product_id |duration_per_product |clicks_per_product
1       1       product1    4                       2
2       1       product2    6                       1
3       1       product3    2                       1
4       1       product1    4                       1
5       1       product4    15                      3
6       2       product4    9                       2

如何在hive 1.1.0中做任何想法?

显然没有工作,因为我不想将产品分组,如果它们结果,我已经尝试了案例,滞后和领导,但没有工作!

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,这是你想要在循环中做的事情, hive不太适合这类问题

话虽如此,这是一种应该有效的方法:

假设这是我们的数据集

1       1       product1    3
2       1       product1    1
3       1       product2    6
4       1       product1    4

识别入门行:1,3,4 这可以通过在id = id + 1上执行左连接并查看用户和产品是否匹配来完成。

用户和产品将所有内容加入到这些启动器中:

1 1
1 2
1 4
3 3
4 1
4 2
4 4

过滤掉错误顺序的事物(行前启动),剩下的是:

1 1
1 2
1 4
3 3
4 4

分组以查找每行的最大有效启动器,剩余的将是:

1 1 
1 2
3 3
4 4

现在加入以重新附加相关维度

1 1 3
1 2 1
3 3 6
4 4 4

现在,您可以通过对起始ID进行分组来获得结果。

1 4
3 6
4 4

当然,您现在可以选择使用其他联接来附加产品名称。

1 product1 4
3 product2 6
4 product1 4

这就是全部!