如何为预期输出编写配置单元脚本

ssm49v7z  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(302)
event1  id1 foo_id1
event1  id1 foo_id2
event1  id1 foo_id3
event1  id1 foo_id4
event1  id1 foo_id1
event1  id2 foo_id1
event1  id2 foo_id2
event1  id3 foo_id1
event1  id1 foo_id1
event1  id3 foo_id3
event1  id4 foo_id1
event1  id4 foo_id2
event1  id1 foo_id1
event1  id4 foo_id3
event1  id4 foo_id4
event2      foo_id1
event2      foo_id2
event2      foo_id3
event2      foo_id3

所有事件(即,事件1、事件2)都有foo\u id。对于“event1”中的所有事件,我想知道这些foo\u id在event2中发生了多少次。
我希望o/p是这样的:

id1    foo_id1  1
id1    foo_id2  1
id1    foo_id3  1
id2    foo_id1  1
id2    foo_id2  1

如何编写配置单元脚本以按预期格式返回数据

INSERT OVERWRITE TABLE table1
SELECT  e1.id, e1.foo_id, count(e2.foo_id)
FROM events e1
LEFT OUTER JOIN events e2
ON e1.foo_id = e2.foo_id 
WHERE e2.event = 'event2' 
AND e1.event = 'event1' 
GROUP BY e1.id, e1.foo_id;

我试过上面的Hive脚本。但是,o/p显示如下:

id1 foo_id1 4
    id1 foo_id2 1
    id1 foo_id3 2
    id2 foo_id1 1
    id2 foo_id2 1

如何编写配置单元脚本以按预期格式返回数据?

h5qlskok

h5qlskok1#

如果只是格式化和将第三列设置为count=x的问题,那么可以使用 concat 配置单元中的自定义项:

INSERT OVERWRITE TABLE table1
SELECT  e1.id, e1.foo_id, concat('count=', count(e2.foo_id))
FROM events e1
LEFT OUTER JOIN events e2
ON e1.foo_id = e2.foo_id 
WHERE e2.event = 'event2' 
AND e1.event = 'event1' 
GROUP BY e1.id, e1.foo_id;

相关问题