【发布时间】:2016-06-13 14:02:31
【问题描述】:
NoViableAltException(26@[])
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1074)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:396)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:308)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1122)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1170)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
at `enter code here`org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:311)
at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:409)
at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:425)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:714)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
FAILED: ParseException line 3:0 cannot recognize input near 'MERGE' 'INTO' 'scrap_data'
Getting the above exception. in order to resolve the same issue, i have fallowed
https://stackoverflow.com/questions/18640760/hive-parseexception-cannot-recognize-input-near-end-string
As per this blog. i made the changes but did not work for me.
Help me with this issue. `enter code here`
CREATE TABLE IF NOT EXISTS tbALPartNr(
pn_id int,
category int,
pn varchar(30),
price decimal(18, 8),
pn_desc varchar(500),
scrap_limit smallint,
scrap_percent decimal(18, 0),
price_limit decimal(18, 8),
plant_name varchar(250)
)
MERGE INTO scrap_data.tbALPartNr t
USING(SELECT distinct[scrap_data.tbALPartNr.pn],
count([scrap_data.tbALPartNr.plant_name])as plants
FROM scrap_data.tbALPartNr group by [scrap_data.tbALPartNr.pn]) s
ON (t.scrap_data.tbALPartNr.pn=s.scrap_data.tbALPartNr.pn)
WHEN MATCHED THEN
UPDATE SET t.category=s.plants;
以上是我的 .hql 脚本中的代码。当我运行脚本时出现错误,你能帮我解决这个问题吗? 在下面的博客中发现了同样的问题,但无助于解决我的问题。 Hive ParseException - cannot recognize input near 'end' 'string'
没有这个逻辑,脚本可以正常工作。
MERGE INTO scrap_data.tbALPartNr t
USING(SELECT distinct[scrap_data.tbALPartNr.pn],
count([scrap_data.tbALPartNr.plant_name])as plants
FROM scrap_data.tbALPartNr group by [scrap_data.tbALPartNr.pn]) s
ON (t.scrap_data.tbALPartNr.pn=s.scrap_data.tbALPartNr.pn)
WHEN MATCHED THEN
UPDATE SET t.category=s.plants;
任何人都可以帮助解决这个问题。
【问题讨论】:
-
您确定支持在 hive 中合并吗? issues.apache.org/jira/browse/HIVE-10924这里的问题还没有解决
-
Roshini 我不确定 HIVE 是否支持 MERGE .. 仍然如此。合并到 scrap_data.tbALPartNr t 使用(SELECT distinct[scrap_data.tbALPartNr.pn],计数([scrap_data.tbALPartNr.plant_name])作为植物 FROM scrap_data.tbALPartNr group by [scrap_data.tbALPartNr.pn]) s ON(t.scrap_data .tbALPartNr.pn=s.scrap_data.tbALPartNr.pn) 匹配后更新集 t.category=s.plants;
-
好吧,如果没有合并支持,那么您将无法在 hive 中执行此操作。 :/ 这意味着 hive 不存在该关键字。 (我不确定我在文档中找不到这个,但又一次我看起来不够努力......只是一个简单的谷歌......我以为你会知道,因为你正在使用它)
-
是的,我用谷歌搜索了它。我没有找到任何带有合并的语法或使用合并在 hive 中完成的任何转换。这是我第一次尝试使用它。但在此错误之后无法继续进行。如果了解它的用法。请在此页面上写下。提前致谢
-
嗯,根据 jira,它应该在 hive 的下一个版本中可用......所以如果你跟踪它,你就会知道。您现在可以选择下一条评论作为答案吗?
标签: hive