hive中的四个by
来源:互联网 发布:韦德上场比赛的数据 编辑:程序博客网 时间:2024/05/16 07:15
order by
全局排序,只有一个reduce
sort by
对每一个reducer内部的数据进行排序,全局结果集来说不是排序的,即只能保证每一个reduce输出的文件中的数据是按照规定的字段进行排序的
insert overwrite local directory ” select * from table_name sort by colum_name
distribute by
注意:这边需要设置reduces的数量为分区的数量,否则不会启动相应的reducer去进行任务的执行,这最终会导致不能完全分区 set mapreduce.job.reduces=<numOfReducers>
;
针对于注意事项,假设我们现在有员工信息表如下:
empno ename sal deptno1 jyw 100.0 12 lq 30.0 13 xzz 10.0 24 dzz 100.0 25 kk 15.0 36 jj 30.0 3
现在我们需要按照deptno进行分区,然后按照sal进行排序,假如我们没有设置rdeucer的数量,那么有可能我们的集群只会启动一个reducer处理这批数据,那么最后的结果就是这样的:
3xzz10.025kk15.036jj30.032lq30.014dzz100.021jyw100.01
解释:因为只有一个reducer,那么在执行mapreduce的分区方法的时候:
public class HashPartitioner<K, V> extends Partitioner<K, V> { /** Use {@link Object#hashCode()} to partition. */ public int getPartition(K key, V value, int numReduceTasks) { return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; }}
因为numReduceTasks为1,所以所有的数据都跑到一个reduce里面了,然后在这个reducer里面按照sal进行了排序,得到的结果就是上面那个样子了
但是如果我们set mapreduce.job.reduces=3的话,那么相同的deptno的数据就会到同一个reducer中,并且那个reducer刚刚好只会有一个deptno的数据结果如下:
000000_0 5kk15.036jj30.03000001_0 2lq30.011jyw100.01000002_0 3xzz10.024dzz100.02
cluster by
当distribute by和sort by的字段相同的时候使用cluster by
阅读全文
0 0
- hive中的四个by
- hive中的distribute By
- hive中的sort by
- hive中的Order By
- hive中的distribute By
- hive中的sort by
- hive中的Order By
- hive中的Order By
- hive中的Order By
- hive中的sort by
- hive中的distribute By
- #hive#hive中的Distinct,group by
- HIVE中的order by操作
- hive中的order by+sort by+distribute by+cluster by
- hive中的order by , sort by, distribute by, cluster by
- hive中的distribute by, order by, sort by简述
- Hadoop Hive 中的排序 Order by ,Sort by ,Distribute by, Cluster By,
- hive 中的Sort By、 Order By、Cluster By、Distribute By 区别<转>
- 初入Django1
- docker及docker常用操作
- POJ 2091 Zing Zhu's Oyster Farm 笔记
- Qt on Android 的 SSL 支持
- 类的定义
- hive中的四个by
- bzoj3456 城市规划【解法一】
- tips:ORA-00911: 无效字符
- C语言实现无头节点的单链表
- 进程、线程的联系与区别
- 在Windows下安装scrapy
- Spring常见面试题
- iOS: 通过addChildViewController实现 Segment 下的 View 的切换
- 复习1