Hive中的数据类型以及存储格式

文章目录

    • 一、数据类型
      • 1、基本数据类型
      • 2、复杂数据类型
    • 二、存储格式
      • 1、textfile
      • 2、SequenceFile
      • 3、RCFile
      • 4、ORCFile
      • 5、Parquet
    • 三、数据格式

一、数据类型

1、基本数据类型

Hive 与其他关系型数据库拥有大部分相同的基本数据类型

类型 描述 示例
boolean true/false TRUE
tinyint 1字节的有符号整数 -128~127 1Y
smallint 2个字节的有符号整数,-32768~32767 1S
int 4个字节的带符号整数 1
bigint 8字节带符号整数 1L
float 4字节单精度浮点数 1.0
double 8字节双精度浮点数 1.0
deicimal 任意精度的带符号小数 1.0
String 字符串,变长 “a”,’b’
varchar 变长字符串 “a”,’b’
char 固定长度字符串 “a”,’b’
binary 字节数组 无法表示
timestamp 时间戳,纳秒精度 122327493795
date 日期 ‘2018-04-07’

这些都是Hive中的表刘字,并且都是对Java中接口的实现,具体行为细节跟Java中对应的类型是完全一样的。
比如:
string - String(java)
float - float(java)…

2、复杂数据类型

类型 描述 示例
array 有序的相同类型的集合 array(1,2)
map key-value 键值对,key必须是原始类型,value可以是任何类型 map(‘a’,1,’b’,2)
struct 结构体,字段集合,类型可以不同 struct(‘1’,1,1.0), named_stract(‘col1’,’1’,’col2’,1,’clo3’,1.0)


二、存储格式

1、textfile

textfile为默认的存储格式,数据不作任何压缩,磁盘开销大,数据解析开销大。

2、SequenceFile

SequenceFile是Hadoop API提供的一种二进制文件格式,其具有使用方便、可分割、可压缩的特点。

SequenceFile支持三种压缩选择:NONE, RECORD, BLOCK。 Record压缩率低,一般建议使用BLOCK压缩。

3、RCFile

一种行列存储相结合的存储方式。

4、ORCFile

数据按照行进行分块,每个块按照列存储,并且其中每个块存储一个索引,这是hive给出的新格式,是RCFile的升级版,性能提升,并且可以压缩存储,进行快速地列存取。

5、Parquet

Parquet也是一种行式存储,同时具有很好的压缩性能;同时可以减少大量的表扫描和反序列化的时间。

三、数据格式

当数据存储在文本文件中,必须按照一定格式区别行和列,并且在Hive中指明这些区分符。Hive默认使用了几个平时很少出现的字符,这些字符一般不会作为内容出现在记录中。

Hive默认的行和列分隔符如下表所示。

类型 描述
\n 对于文本文件来说,每行是一条记录,所以\n 来分割记录
^A (Ctrl+A) 分割字段,也可以用\001 或者 \u0001 来表示
^B (Ctrl+B) 用于分割 Arrary 或者 Struct 中的元素,或者用于 map 中键值之间的分割,也可以用\002 分割。
^C 用于 map 中键和值自己分割,也可以用\003 表示。

你可能感兴趣的:(Hive)