Hive在使用过程中不可避免需要对NULL、’’(空字符串)进行判断和识别。Hive默认情况下底层存储空值跟其他传统数据库有所不同。
1、hive默认存储空值的规则
(1) 不同数据类型对空值的存储规则
Int与String类型,NULL底层默认存储为\N,查询时显示为NULL。String类型的数据如果为”“,存储则是”“,另外往Int类型的字段插入数据””时,结果还是\N。
(2) 不同数据类型空值的查询
对于Int类型可以使用is null来判断空值,对于string类型,条件is null 查出来的是\N的数据,而条件 =”,查询出来的是”“的数据。
2、修改hive底层存储和标识空值的方式
建表时可以通过NULL DEFINED AS定义空值的编码方式,对于已经创建的表,可以通过alter table table_name SET SERDEPROPERTIES(‘serialization.null.format’ = ’ \N’)语句修改hive底层存储空值的方式。
假设hdfs上有以下5行数据的文件:
1|NULL|100
2|null|200
3|\N|300
4||400
5|five|500
现使用以下建表语句创建指向该文件的外部表:
CREATE EXTERNAL TABLE null_test(