美文网首页
Hive踩坑合集

Hive踩坑合集

作者: xxlee | 来源:发表于2019-07-12 16:58 被阅读0次

转载请在文章起始处注明出处,谢谢。


坑1、split的时候,NULL和''的区别

如果字符串最后的#没拼接数据:

select split('1#2###','#')

结果如下:


select split('1#2###','#')[2]

结果如下:



如果字符串最后的#拼接数据:

select split('1#2###3','#')

结果如下:


select split('1#2###3','#')[2]

结果如下:


神奇吧?

如果拼接符后面没有数据,才可以用is null;如果有数据,上报为''。
一劳永逸的解决办法为:split('字符串','#')[2] is null or split('字符串','#')[2] = '',或者 length(coalesce(split('字符串','#')[2],''))=0

坑2、在使用函数对拆分参数中的“数字”做处理的时候

比如用max函数处理拆分参数中的“数字”的时候:拆出来的参数是string格式,而max做处理的时候,需要传数字格式(如int,double)。故需要在拆出来的参数外套一层cast函数,否则结果会异常。

坑3、SQL中NULL不能进行如何的操作

若某表汇总的某列存在NULL则:
如NULL参与算术运算,则该算术表达式的值为null;例如:+,-,*,/ 加减乘除
如NULL参与比较运算,则结果为false;例如:>=,<=,<> 大于,小于,不等于
如果NULL参与聚集运算,则聚集函数都置为null;使用isnull(字段,0)等方式可以避免这种情况);除count(*), count(1), count(0)等之外(count(字段) 字段为null的行不参与计数)。
补充:
1.AVG()
求平均值
注意AVE()忽略NULL值,而不是将其作为“0”参与计算
2.COUNT()
两种用法
1、COUNT(*)
对表中行数进行计数
不管是否有NULL

2、COUNT(字段名)
对特定列有数据的行进行计数

忽略NULL值

3、MAX()、MIN()
求最大、最小值
忽略NULL

4、SUM()
可以对单个列求和,也可以对多个列运算后求和
忽略NULL值,且当对多个列运算求和时,如果运算的列中任意一列的值为NULL,则忽略这行的记录。
例如: SUM(A+B+C),A、B、C 为三列,如果某行记录中A列值为NULL,则不统计这行。

坑4、底层表存的url被encode,需要解码

select reflect("java.net.URLDecoder", "decode", trim('参数'), "UTF-8")

结果:


坑5、hive lateral view explode (array()) array为null

这个UDTF转换的Array为空的记录,自动被过滤掉了。用的时候注意一下,如果要保留记录,要把LATERAL VIEW explode转换成LATERAL VIEW OUTER explode,需要加上outer关键字。


不加outer
加outer

出现这个问题的情况,可以和坑1一块食用。

相关文章

  • Hive踩坑合集

    转载请在文章起始处注明出处,谢谢。 坑1、split的时候,NULL和''的区别 如果字符串最后的#没拼接数据: ...

  • 2019-08-01 疑难杂症之- hive踩坑

    很多时候,你以为你懂了,其实你并没有。采坑指南就是将踩过的坑记住。 1、hive 表新增字段时,采坑 2、hive...

  • 大数据爬坑收录

    爬出过的坑 大数据运维过程就是一个踩坑的过程。如下分享一些踩过的坑,以供参考。 Hive Spark Flink ...

  • 踩坑合集

    1、pagehelper 循环引用问题 解决方法: 方法一 方法二Pagehelper踩坑笔记[https://b...

  • Blog收集

    涵月天-microzz.com 文章 移动端踩坑合集 Nginx 配置简述

  • Hive性能优化

    Hive性能优化 1.概述继续《那些年使用Hive踩过的坑》一文中的剩余部分,本篇博客赘述了在工作中总结Hive的...

  • 小程序框架WePY 从入门到放弃踩坑合集

    小程序框架WePY 从入门到放弃踩坑合集[https://develop.pulsgarney.com/artic...

  • flutter踩坑合集:

    1. This class (or a class which this class inherits from)...

  • 前端踩坑合集

    1.vue中 proxy 代理太多 5个以上可能导致代理错误 404或者是node 内容泄露 错误 elemen...

  • CDH5.7 hive+sqoop踩坑实践

    为了做一个基于hive的大数据采集平台,最近踩了不少的坑。 首先是想采用开源的项目代码搭建hadoop+hive+...

网友评论

      本文标题:Hive踩坑合集

      本文链接:https://www.haomeiwen.com/subject/hhjykctx.html