hive中order by,sort by, distribute by, cluster by作用以及用法

来源:互联网 发布:mac c语言编程软件 编辑:程序博客网 时间:2024/06/06 03:10

一 ORDERBY

ORDERBY 跟传统数据库ORDERBY 一样,会对所有的数据进行排序,可能有很多个Map任务,但是只会由一个Reducer来进行排序,如果数据海量的话,会很影响性能,因为需要花费大量的时间

 

二 SORTBY

如果在hive指定了SORT BY语句,那么在每一个Reducer都会进行排序,言外之意,只保证每一个Reducer的时候进行排序,那么这样的排序是局部的,并非全局的排序。类似于桶内排序

这样有一个好处:做了局部排序之后,进行全局排序的时候,能够效率不少。

 

三 DISTRIBUTEBY

根据指定字段,默认对数据进行hash,然后分道不同的Reducer中。

是控制Map的输出在Reducer是如何划分的,也就是控制哪些map输出到哪一个reducer,一般配合SORT BY使用,即按照什么划分reducer,然后进行Reducer级别的排序。有点分桶的意思。

 

SELECTfid,fname,ftime,fregion FROM movie DISTRIBUTE BY fid

SORTBY fid

 

四CLUSTERBY

CLUSTERBY 是DISTRIBUTE BY + SORT BY的综合。但是他的排序只能是倒序,不能指定ASC 或者DESC

比如

SELECTfid,fname,ftime,fregion FROM movie CLUSTER BY fregion;

等价于

SELECTfid,fname,ftime,fregion FROM movie DISTRIBUTE BY fid

SORTBY fid

 



 

 

阅读全文
0 0