最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[Hive] Hive 模式设计和语言规范

[复制链接]
跳转到指定楼层
楼主
发表于 2019-1-22 21:28:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1. 模式设计
1.1 数据模型-数据的组织方式







Database: 和关系型数据库的Database一样
Table: Hive将数据表分为内部表和外部表。
内部表


在Hive中创建的普通表都可称作“内部表”。因为Hive可以(或多或少)控制其数据的生命周期,内部表对数据拥有所有权。如我们所见,通常Hive会将内部表的数据储存在由hive.metastore.warehouse.dir所定义的目录下。
所以,当删除一个内部表时,相应的数据也会被删除。
外部表
内部表不方便共享数据源。例如,当采用如Pig或MapReduce等技术工具进行数据处理时,我们将无法读取内部表的数据,也不能将外部数据直接作为内部表数据源分享给Hive。这样的需求就诞生了外部表。不同于内部表,Hive 对外部表的数据仅仅拥有使用权,而数据位置可由表管理者任意配置。
如何理解外部表呢?


如图所示,外部表不需要将数据复制到Hive中。一旦关联上数据格式和数据位置,Hive就能直接访问外部数据,非常灵活方便,即插即用。
而加载内部表数据时,Hive会自动将源数据拷贝到内部。内部表其实访问的是数据副本。
注意,Hive加载内部表数据后会把数据源删除,很像"剪切/移动"。所以,往内部表上传数据时,千万记得备份!
分区(使用PARTITIONED BY(..., ...)语法)
对于大型数据处理系统而言,数据分区的功能是非常重要的。因为Hive通常要对数据进行全盘扫描,才能满足查询条件(我们暂时先忽略索引的功能)。
以Hive管理大型网站的浏览日志为例。如果日志数据表不采用分区设计,那么就单日网站流量分析这样的需求而言,Hive就必然要通过遍历全量日志来完成查询。以一年日志为全量,单日查询的数据利用率将不到1%,这样的设计基本上将查询时间浪费在了数据加载中。
分区的优势在于利用维度分割数据。在使用分区维度查询时,Hive只需要加载数据,极大缩短数据加载时间。上述案例中,假使我们以日期为维度设计日志数据表的分区,对于自选日期范围的查询需求,Hive就只需加载日期范围所对应的分区数据。
由于HDFS被设计用于存储大型数据文件而非海量碎片文件,理想的分区方案不应该导致过多的分区文件,并且每个目录下的文件尽量超过HDFS块大小的若干倍。按天级时间粒度进行分区就是一个好的分区策略,随着时间的推移,分区数量增长均匀可控。此外常有的分区策略还有地域,语言种类等等。设计分区的时候,还有一个误区需要避免。关于分区维度的选择,我们应该尽量选取那些有限且少量的数值集作为分区,例如国家、省份就是一个良好的分区,而城市就可能不适合进行分区。
注意:分区是数据表中的一个列名,但是这个列并不占有表的实际存储空间。它作为一个虚拟列而存在。


分桶(CLUSTERED BY (..)  INTO X BUCKETS)
分区提供了一种整理数据和优化查询的便利方式。不过,并非所有数据集都可形成合理的分区,特别是在需要合理划分数据、防止倾斜时。分桶是将数据分解管理的另一技术。
假设我们有一张地域姓名表并按城市分区。那么很有可能,北京分区的人数会远远大于其他分区,该分区的数据I/O吞吐效率将成为查询的瓶颈。如果我们对表中的姓名做分桶,将姓名按哈希值分发到桶中,每个桶将分配到大致均匀的人数。
分桶解决的是数据倾斜的问题。因为桶的数量固定,所以没有数据波动。桶对于数据抽样再适合不过,同时也有利于高效的map-side Join。


分区和分桶之间的关系:
分区和分桶都可以单独用于表;
分区可以是多级的;
分区和分桶可以嵌套使用,但是分区必须在分桶前面。
1.2 数据类型
基本数据类型







复杂数据类型



2. 语言规范
2.1 数据定义语言(DDL)



创建表语句












查看表的schama








加载数据


数据格式





创建分区表

分区表数据导入




创建外部表



使用不同的文件格式





Storage Formats





行存储和列存储



删除数据库/表



2.2 数据查询语言



---------------------
作者:RangeYan2012
来源:CSDN
原文:https://blog.csdn.net/yanshu2012/article/details/54945422
版权声明:本文为博主原创文章,转载请附上博文链接!

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-25 07:32

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表