Hive相关注意事项

1.load data  [locall]  inpath 'xxx' into table xxxxx

如果是本地路径,其实就是一次put上传操作

如果路径是HDFS,其实是一次mv操作

2.创建分区表partitioned by:字段不能和表中列的字段重复

3.创建分桶表cluster by:必须是表中的某列的字段

4.order by :相当于全排序,只有一个reducer

5.sort by:相当于部分排序,每个reducer内有序,利用该字段(key)排序,但是不一定按照该字段分区(key)。(可能使用了自定义排序类实现WritertableComparator

6.distribute by:分区(概念上和分区好像都一样,都使用HashPartition,但是分桶还有抽样查询功能,分区和分桶其他区别笔者不知道,知道的网友可以交流下........)。同时这里按照某个字段(key,因为默认是HashPartition)分区,但是不一定按照该字段(key)排序。此外,当distribute by和sort by结合使用时并且使用的不是同一个key,则sort by 使用的自定义排序类实现WritertableComparator接口从而实现排序。

如下图按照最后一个字段分区,说明该字段是key(默认用的HashPartition),但是没有按照该key排序

7.cluster By

8 sort by 对应部分排序! 将数据根据设置的reduceTask数量,使用HashPartition进行分区!
                        对每个分区后的数据根据指定的字段进行排序!
                        
 排序:  当前的字段,在key中! 而且,在当前key的compareTo方法中,使用了当前字段进行比较!
        
              
              
 分区:  int xx=Partitioner.getPartition(key,value,numReduceTasks)
                            保证返回的0<=xx<numReduceTasks

猜你喜欢

转载自blog.csdn.net/qq_43193797/article/details/86518526