hive支持的数据类型和存储格式

本文介绍了Hive支持的原始数据类型和复杂类型,包括数值型、Boolean、字符串、时间戳等,以及复杂类型的array、map、struct、union。同时,文章还详细解释了Hive支持的存储格式,如TextFile、SequenceFile、RCFile、AvroFiles、ORCFiles、Parquet等。
摘要由CSDN通过智能技术生成

1.hive支持的数据类型:

  Hive支持原始数据类型和复杂类型,原始类型包括数值型,Boolean,字符串,时间戳。复杂类型包括array,map,struct,union。

    原始数据类型:

类型名称大小备注
TINYINT1字节整数45Y
SMALLINT2字节整数12S
INT4字节整数10
BIGINT8字节整数244L
FLOAT4字节单精度浮点数1.0
DOUBLE8字节双精度浮点数1.0
DECIMAL任意精度带符号小数DECIMAL(4, 2)范围:-99.99到99.99
BOOLEANtrue/falseTRUE
STRING字符串,长度不定“a”, ‘b’
VARCHAR字符串,长度不定,有上限0.12.0版本引入
CHAR字符串,固定长度“a”, ‘b’
BINARY存储变长的二进制数据 
TIMESTAMP时间戳,纳秒精度122327493795
DATE日期‘2016-07-03’

  复杂类型:

类型名称大小示例
ARRAY存储同类型数据ARRAY< data_type>
MAPkey-value,key必须为原始类型,value可以是任意类型MAP< primitive_type, data_type>
STRUCT类型可以不同STRUCT< col_name : data_type [COMMENT col_comment], …>
UNION在有限取值范围内的一个值UNIONTYPE< data_type, data_type, …>

 

2.hive支持的存储格式:

  hive支持的存储格式包括TextFile、SequenceFile、RCFile、Avro Files、ORC Files、Parquet。

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 阶段的排序过程。

SequenceFile的文件结构图:

Header通用头文件格式:

SEQ3BYTE
Nun1byte数字
keyClassName 
ValueClassName 
compression(boolean)指明了在文件中是否启用压缩
blockCompression(boolean,指明是否是block压缩)
compressioncodec
Metadata文件元数据
Sync头文件结束标志

Block-Compressed SequenceFile格式

  RCFile

RCFile是Hive推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计理念。当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。需要说明的是,RCFile在map阶段从 远端拷贝仍然是拷贝整个数据块,并且拷贝到本地目录后RCFile并不是真正直接跳过不需要的列,并跳到需要读取的列, 而是通过扫描每一个row group的头部定义来实现的,但是在整个HDFS Block 级别的头部并没有定义每个列从哪个row group起始到哪个row group结束。所以在读取所有列的情况下,RCFile的性能反而没有SequenceFile高。

 

转载于:https://www.cnblogs.com/jvStarBlog/p/10883907.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值