目录

  • 简介
  • 基本数据类型
  • 集合数据类型
  • 文本文件数据编码

简介

Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型

基本数据类型

Hive支持多种不同长度的整型和浮点型数据类型,支持布尔类型,也支持无长度限制的字符串类型。Hive v0.8.0版本中增加了时间戳数据类型和二进制数组数据类型。

表1: 基本数据类型

数据类型

长度

例子

TINYINT

1 byte有符号整数

10

SMALINT

2 byte有符号整数

10

INT

4 byte有符号整数

10

BIGINT

8byte有符号整数

10

BOOLEAN

布尔类型,true或者false

False

FLOAT

单精度浮点数

1.14159

DOUBLE

双精度浮点数

1.14159

STRING

字符序列。 可以指定字符集。

使用单引号或者双引号

'now is the time',“for all good men'

TIMESTAMP

整数,浮点数或者字符串

1327882394 (Unix 新纪元秒)

,1327882394.123456789 (Unix新纪元秒并跟随有纳秒数)

'2012-02-0312:34:56. 123456789'(JDBC所兼容的java.sql.Timestamp时间格式)

BINARY

字节数组

集合数据类型

表2: 集合数据类型

数据类型

长度

例子

struct

和C语言中的struct或者“对象”类似,都可以通过STRUCT“点”符号访问元素内容。

例如,如果某个列的数据类型STRUCT{first STRING,last STRING}

那么第1个元素可以通过字段名.first来引用

struct ('John','Doe')

MAP

MAP是一组键值对元组集合,使用数组表示法(例如['key'])可以访问元素。

例如,如果某个列的数MAP类型是MAP,其中键->值对是‘first’->‘John''last'->'Doe’

那么可以通过字段名[last']获取最后1个元素

map('first', 'John', 'last', 'Doe')

array

数组是一组具有相同类型和名称的变量的集合。

这ARRAY些变量称为数组的元素,每个数组元素都有一个编Array('John','Doe')号,编号从零开始。

例如,数组值为["John','Doe'],那么第2个元素可以通过数组名[]进行引用

Array('Joe', 'John')

文本文件数据编码

表3: Hive 中默认的记录和字段分割符

分隔符

描述

\n

对于文本文件来说,每行都是一条记录,因此换行符可以分割记录

^A (Ctrl+A)

用于分隔字段(列)。 在CREATE TABLE语句中可以使用八进制编码\001表示

^B

用于分隔ARRARY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。

在CREATE TABLE语句中可以使用八进制编码\002表示

^C

用于MAP中键和值之间的分隔。在CREATE TABLE语句中可以使用八进制编码\003表示