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 可用于调试诊断测验等