如何做一个;事件顺序“;Hadoop配置单元中的查询?
在过去的两个月里,我一直在学习Hive,但我很难弄清楚如何进行某些基于序列的查询。举个例子:如何做一个;事件顺序“;Hadoop配置单元中的查询?,hadoop,hive,emr,hiveql,Hadoop,Hive,Emr,Hiveql,在过去的两个月里,我一直在学习Hive,但我很难弄清楚如何进行某些基于序列的查询。举个例子: 我有一个由用户操作组成的巨大日志 每个用户操作都有一个日期字段,但由于来自不同机器的多个日志文件,显然可能无法按该顺序进行扫描 每个日志可以记录各种不同的事件。对于这个例子,我将用字母表示:A,B,C,D 问题是:我如何编写一个查询,询问“平均来说,事件a在B发生之前发生了多少次” 我知道如何对用户进行分组,只对做了A和B的用户进行分组,并对发生的A的数量进行平均,但是限制B的首次出现似乎很困难。我
- 我有一个由用户操作组成的巨大日志
- 每个用户操作都有一个日期字段,但由于来自不同机器的多个日志文件,显然可能无法按该顺序进行扫描
- 每个日志可以记录各种不同的事件。对于这个例子,我将用字母表示:A,B,C,D
谢谢 这不容易映射到SQL,特别是在配置单元中,因为配置单元不支持与equi连接不同的连接
同时,我们可以把很多繁重的工作留给蜂巢,而自己做一小部分
我建议的想法是:让配置单元将特定用户的所有事件组合在一起。我们可以创建自己的agregation UDF,该UDF将计算A和B的最小日期,并给出输出0,1,2,3-如果只有A发生,只有B发生,A发生在B之前,B发生在A之前。
从这里开始,剩下的计算在蜂巢中也变得微不足道
谢谢!我还没有研究过UDF,但看起来聚合函数可以解决这个问题。