当前位置:   article > 正文

Hive正则表达式对数据过滤_hive 正则某个字段中包含非数字

hive 正则某个字段中包含非数字

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

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

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

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

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

[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/396251
推荐阅读
相关标签
  

闽ICP备14008679号