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函数是用来匹配正则表达式的,它只能接受字符串类型的参数。所以我们要进行类型转换然后再查询。

posted @ 2023-06-02 15:46  freshman_xy  阅读(30)  评论(0)    收藏  举报  来源