网站建设教程资源,网站网站制作网站的,交换链接适用于哪些网站,搬家公司电话附近1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的#xff0c;会对查询的结果做一次全局排序#xff0c;所以说#xff0c;只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理#xff08;不管有多少map#xff0c;也不管文件有多少…1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的会对查询的结果做一次全局排序所以说只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理不管有多少map也不管文件有多少的block只会启动一个reducer。但是对于大量数据这将会消耗很长的时间去执行。 这里跟传统的sql还有一点区别如果指定了hive.mapred.modestrict默认值是nonstrict,这时就必须指定limit来限制输出条数原因是所有的数据都会在同一个reducer端进行数据量大的情况下可能不能出结果那么在这样的严格模式下必须指定输出的条数。
2. sort by Hive中指定了sort by那么在每个reducer端都会做排序也就是说保证了局部有序每个reducer出来的数据是有序的但是不能保证所有的数据是有序的除非只有一个reducer好处是执行了局部排序之后可以为接下去的全局排序提高不少的效率其实就是做一次归并排序就可以做到全局排序了。
3. distribute by和sort by一起使用 ditribute by是控制map的输出在reducer是如何划分的举个例子我们有一张表mid是指这个store所属的商户money是这个商户的盈利name是这个store的名字
store: midmoneynameAA15.0商店1AA20.0商店2BB22.0商店3CC44.0商店4执行hive语句
select mid, money, name from store distribute by mid sort by mid asc, money asc
我们所有的mid相同的数据会被送到同一个reducer去处理这就是因为指定了distribute by mid这样的话就可以统计出每个商户中各个商店盈利的排序了这个肯定是全局有序的因为相同的商户会放到同一个reducer去处理。这里需要注意的是distribute by必须要写在sort by之前。
4. cluster by cluster by的功能就是distribute by和sort by相结合如下2个语句是等价的
select mid, money, name from store cluster by mid
select mid, money, name from store distribute by mid sort by mid 如果需要获得与3中语句一样的效果
select mid, money, name from store cluster by mid sort by money 注意被cluster by指定的列只能是降序不能指定asc和desc。
转发:https://blog.csdn.net/jthink_/article/details/38903775