50GB サイズの従業員ログ テーブルで実行される単純な Hive SQL クエリは、何時間も実行されます。
select dept,count(distinct emp_id) from emp_log group by dept;
部門はわずか 4 ~ 5 で、部門ごとに膨大な数の従業員がいます。
1TB メモリで Hive 0.14 + Tez で実行されました。このコード ブロックを最適化してパフォーマンスを向上させる方法はありますか?
変更 1
個別の代わりに collect_list を使用してテストされています。
SELECT dept, size(collect_list(emp_id)) nb_emps
FROM emp_log
GROUP BY dept
以下のエラーが発生しました。
Status: Failed Vertex failed, vertexName=Reducer 2,vertexId=vertex_1446976653619_0043_1_02, diagnostics=[Task failed,taskId=task_1446976653619_0043_1_02_000282, diagnostics=[TaskAttempt 0 failed, info=[Error: Failure while running task:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space