- Mysql中可以使用 limit m,n 来获取从第m行开始数的第n行对应的记录.但是Hive不支持,只能用 limit n .
- join的时候多注意左右表是左小右大.因为在 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,载入条目较少的表 可以有效减少 OOM(out of memory)即内存溢出。所以对于同一个 key 来说,对应的 value 值小的放前,大的放后,这便是“小表放前”原则。 若一条语句中有多个 Join,依据 Join 的条件相同与否,有不同的处理方法。
- 列裁剪: 在select 的时候不要*,只选取所关心的列
比如表有 5 列(a,b,c,d,e),Hive 只读取查询逻辑中真实需要 的 3 列 a、b、e,而忽略列 c,d;这样做节省了读取开销,中间表存储开销和数据整合开销。
- 分区裁剪: 在涉及子查询的时候,尽量把分区约束加在子查询里面可以减少读入的分区数目。
