Hive底层如何表示空值,我们要怎么样控制自定义

Hive在存储数据的时候有一个有别于其他数据库的特点,其他数据库存储中空值是null,当然这里说的是你什么都不存储,默认情况下在连接工具中看到的那个半透明的null,不是你自己存储进去的null,自己存储的那就是字符串了,下面简称真实空字段

言归正传,Hive底层和传统数据库不同,传统数据库对数据的存储是直接操作磁盘io,写在磁盘上,元数据在存储在自己的数据库中,但是Hive有点不一样,它是将数据保存在文件里面,文件,以文件的形式存储在磁盘中,这就导致了中间会产生序列化操作,而数据为空是也是通过特殊字符转义过来的

观察过Hive在hdfs上的表数据文件的小伙伴就会发现,在Hive的表数据文件中如果存在真实空字段数据,那么文件中就会有着如下的值

\N

这个就是默认情况下Hive保存真实空字段的方式,它在反系列化的时候会被转义

如果我们想要改变它,我们可以通过如下语句修改它

alter table  mytable   set serdeproperties (‘serialization.null.format’ = ‘null’);

其中mytable 是表名,后面的null就可以自己决定使用怎样的符号表示真实空字段

猜你喜欢

转载自blog.csdn.net/dudadudadd/article/details/113522740
今日推荐