笔记-hive分区、桶、倾斜

浏览: 1969

--hive分区、桶、倾斜

##marjs老师hive课程的听课笔记

1、分区,是粗粒度的

                partition by (par_col par_type)

                分类:静态分区,分区的值是确定的

                          动态分区,分区的值是不确定的,由输入的值决定 hive set hive.exec.dynamic.partition

                分区字段是伪字段,不能与表定义字段重名

2、桶,是细粒度

  

    clustered by,分桶,兼具distrubuted by和sort by的功能

                           每个reduce处理的数据不重叠,且reduce内的数据是排序的,达到全局有序

            sort by,对同一reduce的数据按指定字段排序;

                          可指定执行的reduce个数

distributed by,按指定字段将数据划分到不同的输出reduce中(保证每个reduce数据不重叠)

                         分区内数据没有排序  

 

3、倾斜表

                skewed by(倾斜的列) on (倾斜的值)

                   eg:skewed by(userid) on(null) --在userid列存在null的数据倾斜

               注意:前提,要知道在那个列那个值上有数据倾斜才能使用;

               倾斜表是把倾斜特别严重的列分开存储为不同文件,每个倾斜的值指定为一个目录或一个文件,

              因此在查询的时候,可以通过过滤倾斜来避免数据倾斜的问题


4、临时表,只能在当前会话中可见的表

                    create temporary table **

                    位置,在hdfs的tmp目录下

                    若创建的临时表与一个已存在的表,表名相同,那么在当前会话下,所有的操作都是对这个临时表的操作

                    局限性: 不支持分区

                                  不支持索引

 

5、删除表

                drop table **

                内表,元数据信息和数据会一起被删除

                          垃圾箱在HDFS中已配置且没有指定PURGE时,数据被移动到.Transh/Current目录下,否则全部删除

                          PURGE,指定PURGE,删除表时,数据不会进入垃圾箱

                外表,仅删除元数据,实际数据还在HDFS上   


6、清空表

                 Truncate table**

                 partition_spec:

                 清空表或分区下的所有行,

                 被清空的表必须是内表,否则会抛出异常(外表不归hive管理所以无法完成清空)

推荐 0
本文由 liliwu 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册