设为首页 加入收藏

TOP

Hive正则表达式对数据过滤
2018-12-07 01:26:52 】 浏览:15
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修改数据表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }