设为首页 加入收藏

TOP

Hive正则表达式对数据过滤
2018-12-07 01:26:52 】 浏览:101
Tags:Hive 正则 表达式 数据 过滤
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyang1354/article/details/60972069

正在做的一个项目中,由于数据量比较大,所以数据的内容比较乱,比如说mac地址,这个地址有的数据中存在,有的数据中不存在,当通过hive进行导出数据的时候,如果存在些非法的类型的数据会造成NoSuchElement异常,经过几天的排查与摸索,终于将该隐患排除。

在hive中如果某些字段,尤其是中间的部分字段是空的值的话,很容易出错,在数据量十分大的情况下甚至于很难去查询到这种比较特殊的情况。
这里写图片描述
如图所示是部分的数据,当然为了安全起见只是截取了一点点,能够反映其特征即可,最顶部的数据可以看到是空值的连续串,甚至还出现了0和-1的值,在MAC地址中这种值应该是错误的值,需要将其从众多的数据中剔除掉,否则会对系统带来安全隐患。

由于数据为MAC地址,所以其格式比较统一,开始是通过判断是不是空来进行剔除,但是后来发现并不是想象的那么简单,有的值多个不是空但是也不是不符合的。
采用正则表达式去匹配,这样更加方便的剔除脏数据了。

select 
  * 
from data 
where
  macaddress regexp "([0-9a-fA-F]{2}){6}"

如果中间存在:的话就改为:

[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hive源码导入eclipse——细读Hive.. 下一篇Hive修改数据表

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目