log1
event1 foo_id1
event1 foo_id2
event1 foo_id3
event1 foo_id4
event1 foo_id1
event1 foo_id1
event1 foo_id2
event1 foo_id1
event1 foo_id1
event1 foo_id3
日志2
event2 foo_id1 od_id1
event2 foo_id1 od_id13
event2 foo_id1 od_id15
event2 foo_id2 od_id2
event2 foo_id2 od_id14
event2 foo_id3 od_id3
event2 foo_id5 od_id9
event2 foo_id8 od_id10
event2 foo_id7 od_id11
event2 foo_id6 od_id12
event2 foo_id1 od_id4
event2 foo_id3 od_id5
event3 foo_id1 od_id6
event3 foo_id2 od_id7
event3 foo_id3 od_id8
预期输出
event2 od_id1 1
event2 od_id2 1
event2 od_id3 1
event2 od_id4 1
event2 od_id5 1
event2 0d_id14 1
event2 od_id13 1
event2 od_id15 1
所有事件(即 event1、event2、event3)都有 foo_id。对于“event1”中的所有事件,我想知道这些 foo_id(s) 在 event2 组中按 od_id 出现了多少次。
最佳答案
您只需要一个“in 子句”,您就可以在 Hive 中使用左半连接。
在您的情况下,您将创建两个表:
create table log1 (id string, fooid string);
create table log2 (id string, fooid string, odid string);
并将您的数据加载到这些表中。
你需要的 SQL 命令是
select id, odid, count(fooid)
from log2 left semi join log1 on (log1.fooid = log2.fooid)
where id = 'event2'
group by id, odid;
关于hadoop - 有没有办法为预期的输出编写配置单元脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20063169/