hive出现Line 1:24 Argument type mismatch ‘empno‘: regexp only takes STRING_GROUP types as 1st argument

这篇文章是我在hive执行sql语句使用Rlike时报错了“FAILED: SemanticException [Error 10016]: Line 1:24 Argument type mismatch 'sal': regexp only takes STRING_GROUP types as 1st argument, got DOUBLE”。记录一下我的解决方法。

目录

一、报错问题

二、问题分析

三、问题解决

四、总结


一、报错问题

hive (default)> select * from emp where sal  RLIKE '[2]';
FAILED: SemanticException [Error 10016]: Line 1:24 Argument type mismatch 'sal': regexp only takes STRING_GROUP types as 1st argument, got DOUBLE

二、问题分析

        这是一个HiveQL的错误信息,它表示在使用regexp函数时,第一个参数sal应该是字符串类型,而不是double类型。regexp函数是用来匹配正则表达式的,它只能接受字符串类型的参数。你需要将sal转换为字符串类型,才能正确地使用regexp函数。

三、问题解决

        你可以使用HiveQL内置的cast函数来实现类型转换,例如将sal转换为字符串类型的写法是:cast(sal as string)。

hive (default)> select * from emp where cast(sal as string) rlike '[7]';
OK
emp.empno       emp.ename       emp.job emp.mgr emp.hiredate    emp.sal emp.comm        emp.deptno
7566    JONES   MANAGER 7839    1981-4-2        2975.0  NULL    20
Time taken: 0.35 seconds, Fetched: 1 row(s)

四、总结

        本文出现的问题是hive使用Rlike进行查询时报错,主要原因是regexp函数是用来匹配正则表达式的,它只能接受字符串类型的参数。所以我们要进行类型转换然后再查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值