在 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 替换 distinct 进行测试。
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