通常来,相同条件下,shark查询不会比Hive慢,但有时确实会发生Shark较慢的情况
原因可能如下:
1.内存设置不当或者数据倾斜,导致shark不可用或者大量任务失败或者长时间的Full GC.
2.Hive 在物理执行上有很多优化,但是Shark并没有完全移植过来。比如在写数据表时,合并数据表的小 数据块文件,根据输入文件大小动态改变marped.reduce.task等。
3.SQL语句中调用的UDF直接或者间接的用到了内存锁。Hive执行是完全多进程的,这个锁并不起作用,而Shark执行是基于多线程的,有些内存锁就会造成性能急剧下降。