CDH6中Impala3报错UDF ERROR: String to Decimal parse failed

执行impala-shell或者在HUE中执行查询的时候会在对decimal类型做四则运算或聚合操作时出现此错误信息,这个错误只出现在CDH6以上的版本/impala3以上,我们也是在集群升级CDH6之后才遇到这个错误。

UDF ERROR:String to Decimal cast overflowed

UDF ERROR: String to Decimal parse failed

出现这个错误的原因是因为CDH6中impala升级到impala3之后decimal格式做了升级,在官方文档中可以看到区别:

https://docs.cloudera.com/documentation/enterprise/6/6.0/topics/impala_decimal.html

官方也给出了解决方案: SET DECIMAL_V2=FALSE;  这样子就不会报错了,但是这个配置是session级别的,我们得想办法配置成为全局的,以保证所有impala-shell调用的sql脚本无需修改就可以正常运行。

这里我参考官方文档的配置在impala的配置文件~/.impalarc 里加上此配置即可:

https://docs.cloudera.com/documentation/enterprise/6/6.0/topics/impala_shell_options.html

[impala.query_options]
DECIMAL_V2=FALSE

加上这个配置之后,该用户执行impala-shell调用脚本时就不会报UDF ERROR:String to Decimal cast overflowed 这个错误了。

如果有多个用户执行脚本需要在每个用户主目录下新建或修改.impalarc文件加上这个配置。

注意这个配置只解决impala-shell命令执行的sql,并不能解决HUE里的这个问题,原因也是因为此配置是session级别的,且impalarc文件是impala-shell在执行的时候会去检查的配置文件,跟HUE没什么关系。

可以看到impala-shell.py里面先读默认配置文件impalarc,默认配置文件impalarc在impala_shell_config_defaults.py中获取.

在配置文件impala_shell_config_defaults.py中可以看到config_file是'~/.impalarc'。

因此如果在HUE里执行SQL查询的时候如果遇到上面的错误,还是需要在HUE的窗口里先执行一下SET DECIMAL_V2=FALSE;

然后就可以欢乐的玩耍了,只要HUE窗口没有关闭就可以正常使用。


扩展:

在该配置文件.impalarc中:

[impala] 下面的配置为系统配置 即 impala-shell -h 之后的那些参数配置。

[impala.query_options]下面的配置为session配置即set xxx=yyy;这样的配置,会给每个会话生效。

 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值