目录

 

1.基本数据类型

 

2.复杂数据类型

3.数据类型应用举例


4.列的分割符


1.基本数据类型

类型

描述

示例

TINYINT

1字节 有符号整数

1

SMALLINT

2字节 有符号整数

1

INT

4字节 有符号整数

1

BIGINT

8字节 有符号整数

1

FLOAT

4字节 单精度浮点型

1.0

DOUBLE

8字节 shuang

1.0

BOOLEAN

true/false

TRUE

STRING

字符串

“a”    'a'

BINARY

字节数组

 

TIMESTAMP

精度到纳秒的时间戳

132550245000,‘2016-01-01 03:04:05.123456789'

新增数据类型TIMESTAMP的值可以是

  • 整数:距离Unix新纪元时间(1970年1月1日,午夜12点)的秒数
  • 浮点数:距离Unix新纪元时间的秒数,精确到纳秒(小数点后保留9位数)
  • 字符串:JDBC所约定的时间字符串格式,格式为:YYYY-MM-DD hh:mm:ss:fffffffff

BINARY数据类型用于存储变长的二进制数据。

2.复杂数据类型

类型

描述

示例

ARRAY

一组有序字段,字段的类型必须相同

array(1,2)

MAP

一组无需的键值对,键的类型必须是原子的,值可以是任何类型。同一个映射的键的类型必须相同,值的类型也必须相同。

map(‘a’,1,’b’,2)

STRUCT

一组命名的字段,字段的类型可以不同

struct(‘a’,1,1,0)

3.数据类型应用举例

##创建员工表,使用默认分割符
CREATE TABLE employee(
      name STRING,
      salary FLOAT,
      leader ARRAY<STRING>,
      deductions MAP<STRING,FLOAT>,
      address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
      )
      ;

4.列的分割符

HiveQL文本文件数据编码表

类型

描述

\n

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

^A(Ctrl+A)

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

^B

用于分隔ARRARY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。在CREATE TABLE语句中可以使用八进制编码\002表示

^C

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

CREATE TABLE employee(
  name                    STRING,
  salary                   FLOAT,
  subordinates         ARRAY<STRING>,
  deductions            MAP<STRING,FLOAT>,
  address                  STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
  )
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY '\001'  
COLLECTION ITEMS TERMINATED BY '\002'  
MAP KEYS TERMINATED BY '\003'  
LINES TERMINATED BY '\n'  
STORED AS TEXTFILE;
  • [ROW FORMAT DELIMITED]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符;
  • FIELDS TERMINATED BY '\001' ,字符\001是^A的八进制数。这个子句表明Hive将使用^A字符作为列分隔符。
  • COLLECTION ITEMS TERMINATED BY '\002'  ,字符\002是^B的八进制数。这个子句表明Hive将使用^B字符作为集合元素的分隔符。
  • MAP KEYS TERMINATED BY '\003'  ,字符\003是^C的八进制数。这个子句表明Hive将使用^C字符作为map的键和值之间的分隔符。
  • LINES TERMINATED BY '\n' 、STORED AS TEXTFILE这个两个子句不需要ROW FORMAT DELIMITED 关键字
  • Hive目前对于LINES TERMINATED BY…仅支持字符‘\n’,行与行之间的分隔符只能为‘\n’。