Hive 数据类型和文件格式

原创 hive

Hive 提供了多种基本数据类型和复合数据类型。

四种基本类型为:

  • 数值类型(Numeric Type)
  • 时间类型(Date/Time Type)
  • 字符串类型(string Type)
  • misc Type

常见的复合数据类型包括 Structs、Maps 和 Arrays。

数值类型

类型 后缀 示例 数据范围 存储 说明
tinyint Y 10Y -128 to 127 1 byte  
smallint S 10S -32768-32767 2 byte  
integer - 10 -2,147,483,648 to 2,147,483,648 to 2,147,483,647 4 byte  
int - 10 -2,147,483,648 to 2,147,483,648 to 2,147,483,647 4 byte 2.2.0integer的同义词引入
bigint L 10L -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 8 byte  
float       4 byte  
double       8 byte  
double precision         double的别名 avaliable starting with 2.2.0
decimal         0.11.0引入,精度38位,0.13.0引入用户可定义精度和规模
numeric         same as decimal ,starting with 3.0.0

小数点

DECIMAL(precision,scale)

decimal(10,0)

时间类型

类型 说明
timestamp starting with 0.8.0
date starting with 0.12.0
interval starting with 1.2.0

时间戳 timestamp

支持传统的 UNIX 时间戳可选的纳秒精度。支持 java.sql.timestamp 格式 yyyy-MM-dd HH:MM:SS.fffffffffyyyy-MM-dd HH:MM:ss.ffffffff

日期 date

yyyy-MM-dd

字符串类型

可以使用单引号(')或双引号("")来指定。

数据类型 长度 版本说明
string    
varchar 1-65355 0.12.0
char 255 0.13.0

misc Type

类型 版本
boolean  
binary 0.8.0

复合数据类型

复杂数据类型的声明必须使用尖括号指明其中数据字段的类型。定义三列,每列对应一种复杂的数据类型,如下所示。

CREATE TABLE complex(
    col1 ARRAY< INT>,
    col2 MAP< STRING,INT>,
    col3 STRUCT< a:STRING,b:INT,c:DOUBLE>
)
  • Structs:一组由任意数据类型组成的结构。比如,定义一个字段 C 的类型为 STRUCT {a INT; b STRING},则可以使用 a 和 C.b 来获取其中的元素值;
  • Maps:和 Java 中的 Map 相同,即存储 K-V 对的;
  • Arrays:数组;
类型 实例 版本
arrays array<data_type>  
maps map<primitive_type,data_type>  
structs struct<col_name:data_type[comment col_comment],…>  
union uniontype<data_type,data_type,…> 0.7.0

Hive 的文件格式

TEXTFILE //文本,默认值

SEQUENCEFILE // 二进制序列文件

RCFILE //列式存储格式文件 Hive0.6以后开始支持

ORC //列式存储格式文件,比RCFILE有更高的压缩比和读写效率,Hive0.11以后开始支持

PARQUET //列出存储格式文件,Hive0.13以后开始支持


参考资料:

  1. Hive Data Types
如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论