私はHiveのcollect_set()関数について知りました。開発3ノードクラスタでジョブを開始しました。Hive(Hadoop)のCOLLECT_SET()
私は約10GBしか処理できません。しかし、仕事は文字通り永遠に取っています。私は、collect_set()の実装にバグがあったり、自分のコードのバグがあったり、collect_set()関数が本当にリソースを消費していると思います。ここで
は(しゃれが意図していない)ハイブのための私のSQLです:
INSERT OVERWRITE TABLE sequence_result_1
SELECT sess.session_key as session_key,
sess.remote_address as remote_address,
sess.hit_count as hit_count,
COLLECT_SET(evt.event_id) as event_set,
hit.rsp_timestamp as hit_timestamp,
sess.site_link as site_link
FROM site_session sess
JOIN (SELECT * FROM site_event
WHERE event_id = 274 OR event_id = 284 OR event_id = 55 OR event_id = 151) evt
ON (sess.session_key = evt.session_key)
JOIN site_hit hit ON (sess.session_key = evt.session_key)
GROUP BY sess.session_key, sess.remote_address, sess.hit_count, hit.rsp_timestamp, sess.site_link
ORDER BY hit_timestamp;
4 MR渡しがあります。最初は約30秒かかりました。 2番目のマップには約1分かかりました。そして、2回目の削減のほとんどは約2分かかりました。過去2時間で97.71%から97.73%に増加しています。これは正しいですか?私はいくつかの問題がなければならないと思う。私はログを見て、それが正常かどうかはわかりません。
[ログのサンプル]
2011-06-21 16:32:22,715 WARN org.apache.hadoop.hive.ql.exec.GroupByOperator: Hash Tbl flush: #hash table = 120894
2011-06-21 16:32:22,758 WARN org.apache.hadoop.hive.ql.exec.GroupByOperator: Hash Table flushed: new size = 108804
2011-06-21 16:32:23,003 INFO org.apache.hadoop.hive.ql.exec.JoinOperator: 4 forwarding 5142000000 rows
2011-06-21 16:32:23,003 INFO org.apache.hadoop.hive.ql.exec.SelectOperator: 5 forwarding 5142000000 rows
2011-06-21 16:32:24,138 INFO org.apache.hadoop.hive.ql.exec.JoinOperator: 4 forwarding 5143000000 rows
2011-06-21 16:32:24,138 INFO org.apache.hadoop.hive.ql.exec.SelectOperator: 5 forwarding 5143000000 rows
2011-06-21 16:32:24,725 WARN org.apache.hadoop.hive.ql.exec.GroupByOperator: Hash Tbl flush: #hash table = 120894
2011-06-21 16:32:24,768 INFO org.apache.hadoop.hive.ql.exec.GroupByOperator: 6 forwarding 42000000 rows
2011-06-21 16:32:24,771 WARN org.apache.hadoop.hive.ql.exec.GroupByOperator: Hash Table flushed: new size = 108804
2011-06-21 16:32:25,338 INFO org.apache.hadoop.hive.ql.exec.JoinOperator: 4 forwarding 5144000000 rows
2011-06-21 16:32:25,338 INFO org.apache.hadoop.hive.ql.exec.SelectOperator: 5 forwarding 5144000000 rows
2011-06-21 16:32:26,467 INFO org.apache.hadoop.hive.ql.exec.JoinOperator: 4 forwarding 5145000000 rows
2011-06-21 16:32:26,468 INFO org.apache.hadoop.hive.ql.exec.SelectOperator: 5 forwarding 5145000000 rows
私はこれでかなり新たなんだ、と(collect_setで動作するようにしよう)とハイブアレイが深い終わりオフ私を運転しています。事前に
感謝:)私がしようとするだろう
は事実テーブルの右側のルールを知りませんでしたが、それはすでにここケースです。心に留めておいてよかったです。私はそれを試し、あなたに知らせるでしょう。 – batman
起動しましたが、最初の部分はやや速かったですが、今は97.71%の周辺で立ち往生しています。これはcollect_set()関数を実行するためのしきい値の割合である可能性があります。 – batman
全く別の問題。ありがとう、上記の私の答え。 – batman