2
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 中某个存储桶(例如s3://hadoop.mycompany.com/bucket1/foo1.txt)下的文件使用。

所有事件都有foo_ids。对于“ event2”中的所有事件,我想知道这些foo_id(s)发生了多少次event1

例如在上述情况下,

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

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

4

1 回答 1

1

嗨,这可以使用以下配置单元脚本来完成:

  1. 首先,您需要使用此命令创建 hive 外部表

    CREATE EXTERNAL TABLE events (event STRING, foo STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3n://hadoop.mycompany.com/bucket1/';

  2. 运行以下查询

    SELECT e2.foo, count(e1.foo) FROM events e2 LEFT OUTER JOIN events 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

希望这能解决您的问题。

于 2013-05-07T19:34:53.997 回答