hive的数据类型和文件格式

时间:2024-03-30 14:01:20

数据类型

一、基本数据类型
hive的基本数据类型无非还是数值型,字符型,时间戳。多了一个字节数组binary。这个binary数组是没有自字节数限制的,可以在记录中包含任意字节
1、数值型
①整型
tinyint:类似于Java中的byte,最多存储1字节的有符号数
smalint:类似于Java中的short,最多存储2字节的有符号数
int:类似于Java中的int,…4…
bigint:类似于Java中的long,…8…

2、布尔型
boolean:与Java中的一样

3、浮点型
float:单精度。4字节
double:双精度,8字节

4、字符型
string

5、时间戳 数据类型
可以是整型浮点型字符型
整型就是显示距离1970.1.1的秒数
浮点型则显示到毫秒位
字符型就是格式化输出:yyyy-mm-dd hh-mm-ffff

6、字节数组
binary:存储字节型数据的数组,可以是任意长度

注意:hive中的基本数据类型都是现实的Java的接口

数据类型的转换:两个不同的数据类型做算术运算时,hive会将数据类型进行隐式转换,小的换成大的类型。如float->double
字符型可以使用AS INT 转换成int类型

二、集合数据类型
1、struct集合:

定义一个字段是struct集合类型,可以通过 字段名.first来引用第一个元素

2、map
定义一个字段为map集合类型,集合中元素是以键值对的形式存在的,可以通过 字段名[‘first’]获取第一个元素

3、array
定义一个字段为某类型的数组,与Java中获取元素的方式一致

定义字段数据类型的样式:
hive的数据类型和文件格式需要注意一下struct的元素类型,使用:连接的。

文件格式的编码

一、hive默认的控制字符
hive可以识别文件中的符号,对文件内容进行存储
\n:换行符
^A:用于分割字段的分隔符,在create table语句中可以用\001表示
^B:用于分割集合数据类型的元素,…\002
^C:用于分割MAP集合中的键与值的分隔符,…\003

用户自定义分隔符:
create table employees(
name string,
salary float,
address
)
ROW FORMAT DELIMITED --必须写在其他关键字之前,除了STORED AS…子句
FIELDS TERMINATED BY ‘\001’ --设置字段分隔符
COLLECTION TERMINATED BY ‘\002’ --设置集合元素分隔符
MAP KEYS TERMINATED BY ‘\003’ --设置map集合的键和值分隔符
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;