Hive中NULL的含义

在Hive中,NULL表示的是异常,与null不同,文件中的null在Hive中被认为字符串,如果对应的字段类型是字符类的,如string,则将其视为一个普通的字符串,而对于数据类的,则若数据本身是null,则由于无法转换为数值,则会显示NULL。

此外,Hive无法实现对NULL数据的过滤。

Hive为读时模式,其在读取时将存储的实际值转化为schema中定义的数据类型,当转换失败时对应值显示为NULL。那么考虑是否可以通过在where子句中对NULL值过滤呢,经过验证答案是否定的,基本可以这么认为,对于读取时无法正确转换的值(select时显示为NULL)的值,是不会参与where字句的运算的。


场景描述

如下所示,在Hive中表中内容以及相应的文件内容如下所示:



各字段类型在字段名称中体现,可以看出,对于char类型将空视作普通的字符展示,对于timestamp类型为空的,则由于不能正常转换,则显示为NULL,同理boolean类型的亦是如此。

验证步骤

Ø  以boolean类型的为例,可以在where子句中过滤掉true和/或false的,查看是否可以省下NULL的:




可以看出NUUL行的并未参与where过滤。

Ø  以timestamp为例,我们知道后台是缺失值的,那么是否可以筛选出来呢?

可以看出是无法过滤得到的。

Ø  但char对于空的值是可以过滤得到的,如下所示:





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汀桦坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值