gpt4 book ai didi

hadoop - 如何在 Hadoop Hive 中执行 "Order of Events"查询?

转载 作者:可可西里 更新时间:2023-11-01 16:34:10 25 4
gpt4 key购买 nike

过去 2 个月我一直在学习 Hive,但我无法弄清楚如何执行某些基于序列的查询。举个例子:

  • 我有一个包含用户操作的巨大日志
  • 每个用户操作都有一个日期字段,但由于来自不同机器的多个日志文件,显然可能不会按该顺序扫描
  • 每个日志都可以记录各种不同的事件。对于这个例子,我将它们表示为字母:A、B、C、D...

问题:我该如何编写一个查询,询问“平均而言,事件 A 在事件 B 发生之前发生了多少次”?

我知道如何对用户进行分组,只取已经完成 A 和 B 的用户,并对发生的 A 的数量进行平均,但是限制第一次出现的 B 似乎很困难。我认为我实际上可以通过将 10 个左右看起来令人讨厌的查询串在一起来做到这一点,但我想知道是否有一种我不知道的更简单的方法来做到这一点。

谢谢!

最佳答案

这不容易映射到 SQL,特别是在 Hive 中,考虑到 Hive 不支持不同于等值连接的连接。
与此同时,我们可以将大量繁重的工作留给 Hive,而自己完成一小部分。
我建议的想法是:让 hive 将特定用户的所有事件组合在一起。我们可以创建自己的聚合 UDF,它将计算 A 和 B 的最小日期并给出输出 0,1,2,3 - 如果只有 A 发生,只有 B 发生,A 发生在 B 之前,B 发生在 A 之前。
从那里开始,其余的计算在 Hive 中再次变得微不足道。

关于hadoop - 如何在 Hadoop Hive 中执行 "Order of Events"查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com