Hive数据类型

基础数据类型:

TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。

复杂数据类型:

包括ARRAY,MAP,STRUCT,UNION。这些复杂类型是由基础类型组成的。

ARRAY:ARRAY类型是由一系列同样数据类型元素组成的,这些元素能够通过下标来訪问。比方有一个ARRAY类型的变量fruits。它是由[‘apple’,’orange’,’mango’]组成,那么能够通过fruits[1]来訪问orange;

MAP:MAP包括key->value键值对。能够通过key来訪问元素。比方”userlist”是一个map类型(当中username是key。password是value),那么我们能够通过userlist[‘username’]来得到这个用户相应的password;

STRUCT:STRUCT能够包括不同数据类型的元素。

这些元素能够通过点的方式来得到,比方user是一个STRUCT类型,那么能够通过user.address得到这个用户的地址。

UNION: UNIONTYPE

基本类型转换

注:因为表格比較大。这里对一些比較长的字符串进行缩写,ts是timestamp的缩写,bl是boolean的缩写,sl是smallint的缩写,dm是decimal的缩写,vc是varchar的缩写,ba是binary的缩写。

Hive文件格式

文件格式

textfile:文本文件

Hive默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

可结合Gzip、Bzip2、Snappy等使用(系统自己主动检查,执行查询时自己主动解压),但使用这样的方式。hive不会对数据进行切分。从而无法对数据进行并行操作。

Sequencefile:二进制文件

SequenceFile是Hadoop API 提供的一种二进制文件,它将数据(key,value)的形式序列化到文件里。

这样的二进制文件内部使用Hadoop 的标准的Writable 接口实现序列化和反序列化。它与Hadoop API中的MapFile 是互相兼容的。

Hive 中的SequenceFile 继承自Hadoop API 的SequenceFile,只是它的key为空。使用value 存放实际的值。 这样是为了避免MR 在执行map 阶段的排序过程。

Rcfile:

RCFile是Hive推出的一种专门面向列的数据格式。

它遵循“先按列划分。再垂直划分”的设计理念。

当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。须要说明的是。RCFile在map阶段从远端拷贝仍然是拷贝整个数据块,而且复制到本地文件夹后,RCFile并非真正直接跳过不须要的列,并跳到须要读取的列, 而是通过扫描每个row group的头部定义来实现的。

可是在整个HDFS Block 级别的头部并未定义每个列从哪个row group起始到哪个row group结束。所以在读取全部列的情况下。RCFile的性能反而没有SequenceFile高。

行存储、列存储以及RCFile方式存储

行存储

HDFS块内行存储的样例



基于Hadoop系统行存储结构的长处在于高速数据载入和动态负载的高适应能力,这是因为行存储保证了同样记录的全部域都在同一个集群节点,即同一个 HDFS块。

只是,行存储的缺点也是显而易见的。比如它不能支持高速查询处理,因为当查询只针对多列表中的少数几列时。它不能跳过不必要的列读取;此外,因为混合着不同数据值的列,行存储不易获得一个极高的压缩比,即空间利用率不易大幅提高。

列存储

HDFS块内列存储的样例



在HDFS上依照列组存储表格的样例。

在这个样例中。列A和列B存储在同一列组,而列C和列D分别存储在单独的列组。查询时列存储能够避免读不必要的列。 而且压缩一个列中的类似数据能够达到较高的压缩比。

然而,因为元组重构的较高开销,它并不能提供基于Hadoop系统的高速查询处理。列存储不能保证同一记录的全部域都存储在同一集群节点,行存储的样例中。记录的4个域存储在位于不同节点的3个HDFS块中。

因此,记录的重构将导致通过集群节点网络的大量传输数据。虽然预先分组后,多个列在一起能够降低开销,可是对于高度动态的负载模式。它并不具备非常好的适应性。

RCFile存储方式

HDFS块内RCFile存储的样例



RCFile结合行存储查询的高速和列存储节省空间的特点。

首先。RCFile保证同一行的数据位于同一节点。因此元组重构的开销非常低。其次,像列存储一样,RCFile能够利用列维度的数据压缩,而且能跳过不必要的列读取。

扩展接口

默认的文件读取方式

自己定义inputformat

自己定义serde

Hive数据类型与文件存储格式的更多相关文章

  1. hive从入门到放弃(六)——常用文件存储格式

    hive 存储格式有很多,但常用的一般是 TextFile.ORC.Parquet 格式,在我们单位最多的也是这三种 hive 默认的文件存储格式是 TextFile. 除 TextFile 外的其他 ...

  2. 大数据:Hive - ORC 文件存储格式

    一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...

  3. Hive - ORC 文件存储格式【转】

    一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...

  4. Hive文件存储格式

    hive文件存储格式 1.textfile textfile为默认格式   存储方式:行存储   磁盘开销大 数据解析开销大   压缩的text文件 hive无法进行合并和拆分 2.sequencef ...

  5. 【图解】Hive文件存储格式

    摘自:https://blog.csdn.net/xueyao0201/article/details/79103973 引申阅读原理篇: 大数据:Hive - ORC 文件存储格式 大数据:Parq ...

  6. Hive文件存储格式和hive数据压缩

    一.存储格式行存储和列存储 二.Hive文件存储格式 三.创建语句和压缩 一.存储格式行存储和列存储 行存储可以理解为一条记录存储一行,通过条件能够查询一整行数据. 列存储,以字段聚集存储,可以理解为 ...

  7. Hive性能调优(一)----文件存储格式及压缩方式选择

    合理使用文件存储格式 建表时,尽量使用 orc.parquet 这些列式存储格式,因为列式存储的表,每一列的数据在物理上是存储在一起的,Hive查询时会只遍历需要列数据,大大减少处理的数据量. 采用合 ...

  8. Hive-ORC文件存储格式

    ORC文件格式是从Hive-0.11版本开始的.关于ORC文件格式的官方文档,以及基于官方文档的翻译内容这里就不赘述了,有兴趣的可以仔细研究了解一下.本文接下来根据论文<Major Techni ...

  9. 大数据:Parquet文件存储格式

    一.Parquet的组成 Parquet仅仅是一种存储格式,它是语言.平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎 ...

随机推荐

  1. 加加减减(你真的懂++--吗) C#

    目录  TOC \o "1-3" \h \z \u 自增量. PAGEREF _Toc456268662 \h 1 08D0C9EA79F9BACE118C8200AA004BA9 ...

  2. .Net Framemwork 之 值类型和引用类型的存储

    C#把数据类型分为两种:值类型 和 引用类型.值类型存储在堆栈中,而引用类型存储在托管堆上. 一.值类型和引用类型变量的存储 首先,变量是存储信息的基本单元,而对于计算机内部来说,变量就相当于一块内存 ...

  3. 解决ios7.0 以后自己定义导航栏左边button靠右的问题

    1.自己定义button //左button UIButton *leftBtn = [[UIButton , , , )]; [leftBtn addTarget:self action:@sele ...

  4. jQuery-mobile 学习笔记之三(事件监听)

    续上 触摸事件 - 当用户触摸屏幕时触发(敲击和滑动) 滚动事件 - 当上下滚动时触发 方向事件 - 当设备垂直或水平旋转时触发 页面事件 - 当页面被显示.隐藏.创建.载入以及/或卸载时触发 一.初 ...

  5. 【Python 数据分析】module 'numpy' has no attribute 'array'

    安装好Numpy模块后,开始做了几个小测试都可以运行,但是当我创建numpy.py这个文件后 numpy.py import numpy y = numpy.array([[11,4,2],[2,6, ...

  6. Spring Boot(二)Application events and listeners

    一.自定义监听器: 1.创建: META-INF/spring.factories 2.添加: org.springframework.context.ApplicationListener=com. ...

  7. UIActivityViewController实现系统原生分享

    代码地址如下:http://www.demodashi.com/demo/11042.html 一.效果预览 二.接下来介绍UIActivityViewController,跟我动手做 1.创建要分享 ...

  8. Spring+Hibernate整合

    因为整合spring和hibernate所以,需要用到spring里面复写Hibernate的类以有DI和IOC特性 db.sql hibernate_basic数据库 表 person 字段 pid ...

  9. HDOJ 5418 Victor and World 状压DP

    水状压DP Victor and World Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java ...

  10. Python处理验证码第一篇(pytesser初探及报错处理)

    (原文链接:http://blog.csdn.net/Bone_ACE/article/details/50436587) 前言: 春节期间,无法全身心投入地去写爬虫,那就玩玩验证码吧,应该比较有趣! ...