hive 数据表及常用操作

时间:2022-03-04 14:31:11

一、数据类型

数据类型 所占字节
TINYINT 1byte,-128 ~ 127
SMALLINT 2byte,-32,768 ~ 32,767
INT 4byte,-2,147,483,648 ~ 2,147,483,647
BIGINT 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
BOOLEAN  
FLOAT 4byte单精度
DOUBLE 8byte双精度
STRING  
BINARY Hive0.8.0
TIMESTAMP Hive0.8.0
DECIMAL Hive0.11.0
CHAR Hive0.13.0
VARCHAR Hive0.12.0
DATE Hive0.12.0

二、分隔符

Hive默认的分隔符。

分隔符 描述
\n 换行符,默认行分隔符
^A(Ctrl+A) 文本中以八进制\001表示,列分隔符
^B(Ctrl+B) 在文本中以八进制\002表示,作为分隔Array、Struct中的元素,或者Map中键值对的分隔
^C(Ctrl+C) 在文本中以八进制\003表示,用于MAP中键值对的分隔

三、文件存储格式

TEXTFILE :即通常说的文本格式,默认长期,数据不做压缩,磁盘开销大、数据解析开销大。 
SEQUENCEFILE :Hadoop提供的一种二进制格式,使用方便、可分割、可压缩,并且按行进行切分 。
RCFILE :一种行列存储相结合的存储方式,首先,其将数据按行分块,保证同一条记录在一个块上,避免读一条记录多个块。其次,块上的数据按照列式存储,有利于数据压缩和快速地进行列存取。 
自定义文件格式 :用户通过实现InputFormat和OutputFormat来自定义输入输出格式。

四、建表

Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name
 
[(col_name data_type [COMMENT col_comment], ...)]
 
[COMMENTtable_comment]
 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 
[CLUSTERED BY (col_name,col_name, ...) [SORTED BY (col_name[SCC|DESC], ...)] INTO num_buckets BUCKETS]
 
[ROW FORMAT row_format]
 
[STORED AS file_format]
 
[LOCATION hdfs_path]
CREATE TABLE tablename(
id int,
name string
)
PARTITIONED BY(dt string)  --分区键和字段不能重复
--自定义分隔符 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'     --字段分隔符
COLLECTION ITEMS TERMINATED BY '\002'   --数组分隔符 结构体分隔符
MAP KEYS TERMINATED BY '\003'   --map分隔符
LINES TERMINATED BY '\n'   --行分隔符
STORED AS TEXTFILE;

 

五、加载数据

LOAD DATA LOCAL INPATH 'file_path'
OVERWRITE  INTO TABLE tablename;

有LOCAL表示从本地文件系统加载(文件会被拷贝到HDFS中)

无LOCAL表示从HDFS中加载数据(注意:文件直接被移动!!!)

OVERWRITE  表示是否覆盖表中数据(或指定分区的数据)(没有OVERWRITE  会直接APPEND,而不会滤重!)

六、空值判断

hive底层通过 alter table name SET SERDEPROPERTIES('serialization.null.format' = '\N'); 参数控制NULL的标识。

若设置为'\N',则底层保存为'\N'而显示的是NULL,此时查询空值的语句为: a is null 或者 a='\\N';同理,若设置为'NULL',则查询空值的语句为:a is null 或者 a='NULL'。

查询''空字符串,但字段不为null,需要通过语句:a=''  或者 length(a)=0 。

 

 

 

参考链接:

https://blog.csdn.net/xundh/article/details/71404376    Hive 数据类型和存储格式、建表操作

https://www.cnblogs.com/tugeler/p/5133019.html    Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项

https://blog.csdn.net/jyl1798/article/details/41871013    hive 空值、NULL判断