event1 foo_id1
event1 foo_id2
event1 foo_id4
event1 foo_id6
event1 foo_id7
event1 foo_id8
event1 foo_id8
event1 foo_id1
event1 foo_id4
event2 foo_id1
event2 foo_id2
event2 foo_id3
event2 foo_id4
event2 foo_id5
event2 foo_id6
event2 foo_id8
event2 foo_id9
event2 foo_id11
上述信息在某个存储桶(例如s3://hadoop.mycompany.com/bucket1/foo1.txt
)下以S3中的文件形式提供。
所有活动都有foo_ids
。对于“event2
”中的所有活动,我想知道foo_id
中event1
个出现的次数。
e.g。在上述情况下,
foo_id1=2
foo_id2=1
foo_id3=0
foo_id4=2
foo_id5=0
foo_id6=1
foo_id8=2
foo_id9=0
foo_id11=0
如何编写hive脚本以返回预期格式的数据?
答案 0 :(得分:1)
您可以使用以下配置单元脚本完成此操作:
首先,您需要使用此命令创建配置单元外部表
创建EXTERNAL TABLE事件(事件STRING,foo STRING) 由'\ t'终止的行格式删除字段 LOCATION的s3n://hadoop.mycompany.com/bucket1/';
运行以下查询
SELECT e2.foo,count(e1.foo) FROM事件e2 LEFT OUTER JOIN事件e1 ON e1.foo = e2.foo AND e1.event ='event1' WHERE e2.event ='event2' GROUP BY e2.foo;
你应该得到你需要的结果,如下所示:
foo_id1 2
foo_id11 0
foo_id2 1
foo_id3 0
foo_id4 2
foo_id5 0
foo_id6 1
foo_id8 2
foo_id9 0
希望这能解决你的问题。