hive 报错NoViableAltException

本文介绍了一个关于Hive SQL的常见错误——NoViableAltException,并提供了详细的错误信息及排查过程。通过删除注释中的分号,成功解决了该问题。

hive 报错NoViableAltException

报错内容

报错图片

NoViableAltException(-1@[123:1: selectItem : ( ( tableAllColumns )=> tableAllColumns -> ^( TOK_SELEXPR tableAllColumns ) | ( expression ( ( ( KW_AS )? identifier ) | ( KW_AS LPAREN identifier ( COMMA identifier )* RPAREN ) )? ) -> ^( TOK_SELEXPR expression ( identifier )* ) );])
        at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser$DFA17.specialStateTransition(HiveParser_SelectClauseParser.java:5389)
        at org.antlr.runtime.DFA.predict(DFA.java:80)
        at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectItem(HiveParser_SelectClauseParser.java:2247)
        at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectList(HiveParser_SelectClauseParser.java:1168)
        at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectClause(HiveParser_SelectClauseParser.java:942)

报错排查

insert overwrite table cl_ads.ads_finance_invoicing_mi
partition(ptt_mon,pf)
SELECT account parent_account, -- 母账号
 (balance - recharge_money + charge) beginning_money, -- 期初金额 
recharge_money, -- 本期充值金额, 判断销账类型,如果是月结,不减;其他的销账减 期初=期末-本期充值+本期消耗
shibai_huankuan fail_remission_money,
${ptt_mon} ptt_mon,
           'ws' pf
FROM
   cl_ods.ods_ws_t_record_detail_daily_di
      WHERE ptt_mon = '${ptt_mon}'
     ;

排查错误: 其中注释中包含了 ‘;’ , 造成报错

报错解决

解决方案: 删除注释中的 ’ ;’

参考资料

  • 解决了问题的资料(注释中’;'作为终止符,产生错误,)

https://www.cnblogs.com/barneywill/p/11272426.html
https://blog.youkuaiyun.com/qq_26645205/article/details/78352882

  • 关键字冲突(本例中无效)

https://blog.youkuaiyun.com/qq595662096/article/details/100150850

  • 指定子查询的表名(本例中无效)

https://blog.youkuaiyun.com/Maricle_Again/article/details/100364188

NoViableAltException(9@[]) at org.apache.hadoop.hive.ql.parse.HiveParser.type(HiveParser.java:36813) at org.apache.hadoop.hive.ql.parse.HiveParser.colType(HiveParser.java:36595) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeConstraint(HiveParser.java:34322) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrConstraint(HiveParser.java:34075) at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrConstraintList(HiveParser.java:29819) at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:6662) at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:4295) at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2494) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1420) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:220) at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:74) at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:67) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:616) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1826) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1773) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1768) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:214) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAcce
最新发布
05-13
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值