hive 分区表、桶表和外部表

1:分区表

     图:创建分区表


      图:导入数据


        图:在HDFS的显示信息

分区字段就是一个文件夹的标识


     图:在多列上创建分区



      图:导入数据


                 图:在多列上建立分区后在HDFS上形成的结构信息

把表中的大多数字段建立为分区字段,可行吗?分区不是越多越好,分区越多的话,加载数据的话必须注意分区,那么文件会被控制的非常小,Map的任务数量增多,

计算不一定会快。Hive限定了分区的数量。选用一些查询比较频繁的字段来建立分区,时间字段等。

查询比较频繁,并且不会有很多枚举值的字段,适合作为分区字段。分区字段就是虚拟列(virtual column)。


       图:查询结果,其中分区字段显示了出来,但是在数据文件中是不存在的,那么我们称它们为虚拟列。

不合理的地方,比如我们对一个网站的销售日志进行分析,我们根据ip地址的地区进行分区,那么有些地区如京广沪地区的ip会比较多,

造成数据分布的不平衡,有些文件中的数据多,有些文件中的数据少。

2:桶表

对立面的记录做一个hash计算,经过hash运算后,  然后对hash进行取模计算,比如mod 10,那么取模计算后,划分的每份的数据量是差不多的,

模的数据为桶,模10的话,那么就有10个桶,那么各个map进行计算的时间差不多,缺点:用业务字段来查询的话,没有什么效果。

进行表连接的时候查询数据方便;进行抽样查询时比较方便,按照桶表进行抽比较符合要求。



      图:创建桶表,并加载数据


                                                                                     图:分完桶后是三个文件


3:外部表

 外部表不对应HDFS的文件夹,但是在数据库中能够找到它。把数据表删了不会影响数据。

  

外部表和分区表用的比较多,用户在上传数据时早已根据某些字段对数据进行了划分。



       图:创建外部表并查询


   





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波哥的技术积累

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值