hadoop - 有没有办法为预期的输出编写配置单元脚本

标签 hadoop hive

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/

相关文章:

hadoop - Orc 不比 Hive 中的 csv 快?

hadoop - HBase 与 MapReduce

hadoop - 从远程机器连接到 hbase

xml - 使用 Hadoop MapReduce 处理 XML

azure - 启动 Hive 元存储时无法创建 ServerSocket

具有 Hive 流的 Python 2.7 模块

hadoop - 当我们 select * table_name where id = 10; 时运行了多少映射器和缩减器;在 hive

java - 加载到 Spark 数据集中的文件列表

postgresql - 将 postgresql 数组导入配置单元

hadoop - 从表中创建 json