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. 运用JMX监控Tomcat

    1.先配Tomcat的启动语句,window下tomcat的bin/catalina.bat(linux为catalina.sh),在头上注释部分(.bat为rem..sh为#)后面加上set JAV ...

  2. 设计模式在cocos2d-x中的使用--简单工厂模式(Simple Factory)

    什么是简单工厂模式? 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式.通过专门定义一个类来负责创建其它类的实例,被创建的实例 ...

  3. STL源码剖析(迭代器)

    在STL中,容器跟算法是分开设计的,算法是通过迭代器来对容器进行操作的. 在算法运用迭代器的时候,可能会用到其相应的型别,例如返回值为容器中元素的型别,又或者说根据迭代器的类型来选择更好的算法等等. ...

  4. JavaScript | 对象详解

    ————————————————————————————————————————————————————————— 对象有哪些(导图) 内建对象 数据封装对象 Object对象 Object.prot ...

  5. PL/SQL TOAD 不安装Oracle客户端连接数据库的方法

    不安装Oracle客户端连接数据库的方法 本机环境: win7 64位中文旗舰版 一.准备工作: 1)到ORACLE官网下载instantclient,下载地址:http://www.oracle.c ...

  6. laravel的模板嵌套循环可以这样调试

    @foreach($first as $value) {{ dump($value) }} @endforeach

  7. poj1860--Currency Exchange

    Bellman-ford算法的反向应用--正循环检查 /** \brief poj 1860 Bellman-Ford * * \param date 2014/7/24 * \param state ...

  8. POJ 2409 Let it Bead(Polya简单应用)

    Let it Bead 大意:给你m种颜色,n个珠子串起来.旋转跟反转同样算同样,问有多少种不同的涂色组合方式. 思路:Polya的简单应用. /*************************** ...

  9. firefox配置

    Firefox23取消了一个很人性化的功能,就是在GUI界面中禁用JavaScript,对于这点我很不能理解!JavaScript是所有网页木马 的源头,防人之心不可无,FireFox就这么确信能防住 ...

  10. 获取表单select域的选择部分的文本

    body> <form action="index.php"> <select name="" id="select" ...