Hive面试题4:讲讲Hive中的排序Sort By、Order By、Cluster By、Distrbute By

hive中的4个排序,面试时经常被问到。自己总结的一个面试时的话语:

1.order by 会对输入做全局排序,为保证全局的排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
2. sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,则sort by只保证每个reducer的输出有序,不保证全局有序。
3. distribute by(字段)根据指定的字段将数据分到不同的reducer,且分发算法是hash散列,常用sort by结合使用,Hive要求distribute by语句要写在sort by语句之前。
4. cluster by(字段) 除了具有distribute by的功能(既可以把数据分到不同的reduce)外,还会对该字段进行排序.但是排序只能是倒序排序,不能指定排序规则为asc或者desc
5. 因此:
当数据量规模较大时,不使用order by,使用用distribute by + sort by
如果distribute bysort by字段是同一个时,此时,cluster by = distribute by + sort by

发布了35 篇原创文章 · 获赞 12 · 访问量 6637

猜你喜欢

转载自blog.csdn.net/u012955829/article/details/102847736
今日推荐