语法结构
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list [HAVING condition]] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list] ] [LIMIT number]
注:1、order by
会对输入做全局排序,因此只有一个reducer
,会导致当输入规模较大时,需要较长的计算时间。
2、sort by
不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by
进行排序,并且设置mapred.reduce.tasks>1
,则sort by
只保证每个reducer
的输出有序,不保证全局有序。
3、distribute by
根据distribute by
指定的内容将数据分到同一个reducer
。
4、Cluster by
除了具有Distribute by
的功能外,还会对该字段进行排序。因此,常常认为cluster by = distribute by + sort by
。
具体实例
1、获取年龄大的3个学生
2、查询学生信息按年龄,降序排序
3、按学生名称汇总学生年龄