Hive中的NULL的处理、优点、使用情况

一:Hive中的NULL

hive的使用中不可避免的需要对null、‘’(空字符串)进行判断识别。但是hive又别于传统的数据库。
1.不同数据类型对空值的存储规则
int与string类型数据存储,null默认存储为 \N;

string类型的数据如果为"",存储则是"";

另外往int类型的字段插入数据“”时,结果还是\N。

2.不同数据类型,空值的查询

对于int可以使用is null来判断空;

而对于string类型,条件is null 查出来的是\N的数据;而条件 =’’,查询出来的是""的数据

所以:
判断空时要根据实际的存储来进行判断。在开发过程中如果需要对空进行判断,一定得知道存储的是哪种数据。

二:Hive中的NULL的处理

建表时直接指定(两种方式)
1.用语句
ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe’
with serdeproperties(‘serialization.null.format’ = ‘’)实现,
注意两者必须一起使用,

 create table adm.adm_crystal_plan_batch_order_7d_delta_daily(order_item_unit_price                    string,order_qty                                bigint,payment_amt                              bigint)partitioned by (dt string)row format delimited fields terminated by '31'stored as textfiletblproperties ( 'serialization.null.format' = '');

2.通过ROW FORMAT DELIMITED NULL DEFINED AS ‘’

   CREATE TABLE hive_tb (id int,name STRING)PARTITIONED BY ( `day` string,`type` tinyint COMMENT '0 as bid, 1 as win, 2 as ck', `hour` tinyint)ROW FORMAT DELIMITED NULL DEFINED AS '' STORED AS TEXTFILE;

补充:修改已存在的表

   alter table hive_tb set serdeproperties('serialization.null.format' = '');

这句话的意思是让null和’‘等价,也就是让null不显示,因为null对开发来说不好操作,可能不同地方代表意义不同,而且转码可能也会有问题,所有用’'代替。

三:Hive中的NULL的处理优点

HIVE表中默认将NULL存为\N,可查看表的源文件(hadoop fs -cat或者hadoop fs -text),文件中存储大量\N,
这样造成浪费大量空间。
可以看出存储NULL的\N 浪费了大量空间
使用以上的语句进行创建的时候,可以相互对比一下 数据量的大小空间
在hdfs上面对应的文件查询就可以看到结果

 hadoop fs -du

可以进行 节省空间结果的验证

四:Hive中的NULL的使用情况(注意)

但是不是所有的情况都需要进行是hive的null处理的

1.hive中insert语句必须列数匹配,不支持不写入,没有值的列必须使用null占位。

2.hive表的数据文件中按分隔符区分各个列。空列会保存NULL(\n)来保留列位置。但外部表加载某些数据时如果列不够,如表13列,文件数据只有2列,则在表查询时表中的末尾剩余列无数据对应,自动显示为NULL。

详解:Hive中的NULL的处理、优点、使用情况(注意)相关推荐

  1. linux下详解shell中/dev/null 21

    前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...

  2. java lock unlock_详解Java中的ReentrantLock锁

    ReentrantLock锁 ReentrantLock是Java中常用的锁,属于乐观锁类型,多线程并发情况下.能保证共享数据安全性,线程间有序性 ReentrantLock通过原子操作和阻塞实现锁原 ...

  3. java mysbatis select_java相关:详解Mybatis中的select方法

    java相关:详解Mybatis中的select方法 发布于 2020-7-3| 复制链接 摘记: selectById方法根据id,查询记录 ```java public void updateRe ...

  4. mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数

    <Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...

  5. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换

    JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...

  6. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

  7. java中priorityqueue_详解JAVA中priorityqueue的具体使用

    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...

  8. java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能

    struts2中拦截器大家都很经常使用,但是拦截器只能拦截action不能拦截jsp页面.这个时候就有点尴尬了,按道理来说没登录的用户只能看login界面不能够通过输入url进行界面跳转,这显然是不合 ...

  9. 218.94.78.76:20001/index.php,详解spring中使用Elasticsearch的实例教程

    本篇文章主要介绍了详解spring中使用Elasticsearch的代码实现,具有一定的参考价值,有兴趣的可以了解一下 在使用Elasticsearch之前,先给大家聊一点干货. 1. ES和solr ...

最新文章

  1. Android 系统开发_四大组件篇 -- Service 解析(用法)
  2. 根据文件路径检测文件大小并检测是否正在被占用
  3. logback常用配置
  4. ATOM editor recommended by Sean
  5. 计算机网络基础 第4章 龚娟,计算机网络基础 人民邮电 龚娟 第4章习题答案
  6. 121. 买卖股票的最佳时机 golang
  7. vue v-if判断数组元素的值_我对Vue项目上线做的一些基本优化
  8. 保存画面为图片 当前MFC保存该程序为图片 c++ vc
  9. sql server cross/outer apply 用法
  10. MAPGIS67默认打开方式失败
  11. 常见For 循环优化方式总结——提高效率小妙招
  12. 解决 zsh:command not found
  13. 圆柱壳matlab,[matlab遗传算法工具箱论文]基于遗传算法和BP神经网络的圆柱壳大...
  14. 如何查看win10电脑系统盘是哪个盘?
  15. 2020年12月编程语言排行榜
  16. python制作折线图_python 生成折线图
  17. 推荐几款网盘资源搜索站点,必须收藏 !
  18. html5 邮箱后缀自动填写,Ant Design Vue AutoComplete 通过自定义选项search实现如自动补充邮箱后缀功能...
  19. VSCode 与 WebStorm 横向对比
  20. Android中实现简单的仿京东详情页面

热门文章

  1. LindDotNetCore~入门基础
  2. 201612-1-中间数
  3. Python中easy_install 和 pip 的安装及使用
  4. 企业级数仓构建项目一-大数据Week12-DAY1-企业级数仓构建项目一
  5. disable-user-add-description
  6. 【编译原理笔记07】语法分析:SLR、LR(1)、LALR、二义性分析与错误处理
  7. mysql4.52_phpMyAdmin 4.5.0.2 发布下载,MySQL 管理工具
  8. 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
  9. mfc 学习的第三天
  10. 编译或者运行找不到库解决