hive中的排序的使用

order by

  • hive中如果需要对全部数据进行排序,可以使用order by操作
select (查询内容) 
from table 
order by (排序条件) (升序降序) 
limit (展示条数);
  • 注意:如果数据量太大的话,有可能会导致一个Reducer应付不过来。

sort by

  • hive中如果数据量太大的话可以使用sort by,sort by为每个reducer产生一个排序文件,每个reducer内部进行排序,对全局结果来说并不是有序的。
select (内容)
  from table
  sort by (排序条件);

distribute by

  • hive中如果需要将某个字段指定到特定的reducer上,需要用到distribute by,通常也是为了后续的聚集操作。
select (内容)
  from table
 distribute by (排序条件1)
  sort by (排序条件2)
 limit (展示条数);
  • distribute by是指将相同的 (排序条件1) 放到同一个reducer中,sort by会按照 (排序条件2) 进行reducer内的排序。

cluster by

  • 当distribute by和sort by的字段相同时,可以使用cluster by代替。
select (内容)
  from table
 cluster by (排序条件)
  • 上面代码中,意思是按照将数据按照 (排序条件) 指定到同一个reducer中后,再在reducer内按照 (排序条件) 进行排序。但是有一个限制就是,只能是升序排序,不能指定asc或者desc的排序方式。

你可能感兴趣的:(hive中的排序的使用)