zoukankan      html  css  js  c++  java
  • Hive对于Null值的储存处理(什么where COL_NAME is null不起作用)

    今天在做hive查询时,居然发现select count(*) where url is null;居然一条记录都找不出来,换成select count(*) where url = null;也没有用,但是我刚导入hive的表格中明明好大量行的url值都是空的!

    仔细研究了一番(主要就是使用insert语句故意插入null值,然后再到HDFS上去下载表格的文本文件来看),发觉Hive并不像传统的关系型数据库一样,把空值 "" 作为null,而是用"N"来代表NULL值!

    就算你在load data前,故意将原始的文本文件中的空置位置插入ASCII code为00的特殊字符NULL,如下图所示,Hive也不会将这个真正的NULL值识别为NULL。

    所以如果你要查询空置的话,请使用where COL_NAME = ''

    如果要查询真正的NULL值,请使用where COL_NAME = '01'

    (此处01为null值的八进制ASCII码,头一个0代表8进制。此表示方法来源于java的char类型,因为hive也是用java编写的。)

  • 相关阅读:
    MD5
    第一阶段冲刺(十)
    团队作业进度报告
    第一阶段冲刺(九)
    团队作业进度报告
    第一阶段冲刺(八)
    第一阶段冲刺(七)
    团队作业进度报告
    第一阶段冲刺(六)
    团队作业进度报告
  • 原文地址:https://www.cnblogs.com/hejing195/p/7430085.html
Copyright © 2011-2022 走看看