博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive 分区表、桶表和外部表
阅读量:7114 次
发布时间:2019-06-28

本文共 765 字,大约阅读时间需要 2 分钟。

hot3.png

1:分区表

     图:创建分区表

      图:导入数据

        图:在HDFS的显示信息

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

     图:在多列上创建分区

      图:导入数据

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

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

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

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

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

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

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

2:桶表

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

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

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

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

                                                                                     图:分完桶后是三个文件

3:外部表

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

  

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

       图:创建外部表并查询

转载于:https://my.oschina.net/sniperLi/blog/528076

你可能感兴趣的文章
复杂SQL代码实例
查看>>
完成注册
查看>>
java web 跨域
查看>>
python中的一等对象--函数
查看>>
清点人数
查看>>
通过格式输出控制使输出的结果对齐
查看>>
2012年蓝桥杯【初赛试题】 密码发生器
查看>>
别再嘴炮概念了!大数据是硬汉之战,你的肌肉呢?
查看>>
浅谈华为如何实现区块链的安全隐私保护
查看>>
国货当自强!四款好用又免费的国产项目管理工具
查看>>
AT3912 Antennas on Tree
查看>>
symbian s60权限详解
查看>>
一 APPIUM基本理论知识(转)
查看>>
String、StringBuffer和StringBulder
查看>>
mysql 数据类型,字符集
查看>>
电力系统【第1章:电力系统概述】
查看>>
web环境搭建
查看>>
Codeigniter出现Unable to connect to your database server using the provided settings错误解决办法...
查看>>
html相对定位绝对定位
查看>>
YII 框架在 MAC OS下 连接数据库失败 提示 DB connection: SQLSTATE[HY000] [2002]
查看>>