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://hadoop.mycompany.com/bucket1/foo1.txt) の下の S3 のファイルとして利用できます。

すべてのイベントにはfoo_ids. " " のすべてのイベントについて、それらが で何回発生したevent2かを知りたいです。foo_idevent1

たとえば、上記の場合、

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. 最初に、このコマンドを使用してハイブ外部テーブルを作成する必要があります

    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 に答える