Hive --------- hive的数据类型

版权声明:个人原创,转载请标注! https://blog.csdn.net/Z_Date/article/details/83931019

目录

 

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’。

猜你喜欢

转载自blog.csdn.net/Z_Date/article/details/83931019