hive 优化之-------HQL

多表联合查询时候,小表尽量放左边,因为hive会把最后一个当做大文件放磁盘扫描,把前面的尽量放入内存;

Sort by 与 order by的区别是 sort by 只是reduce 范围内的排序,而order by 是全局排序,可以利用 distribute by 和 sort by 提高效率, distribute by 可以指定shuffle过程中 做partition 的字段,这样 distribute by 与 sort by 指定同一个字段,则该字段同一个值的记录都在同一个reduce处理,再在同一个reduce里排序。(hive 要求 distribute by 写在 order by前面)

cluster by 是distribute by和sort by相结合,但是排序只能是倒序排序,不能指定排序规则为asc 或者desc。

同理tablesample的列与cluster by的列相同,会节省资源

同一份数据多个处理,一次扫描处理多件事( From tab xxx yyy zzz;)

hive 中有虚拟列(set hive.exec.rowoffset=true):INPUT_FILE_NAME,BLOCK_OFFSET_INSIDE_FILE,line  可用于调试诊断测验等

posted on 2016-04-08 12:19  不忘初衷,方能致远  阅读(333)  评论(0)    收藏  举报

导航