hive命令 - 显示表或任何不起作用的命令

时间:2015-09-02 16:44:21

标签: mysql hadoop hive remote-connections

我无法从hive> shell运行任何查询。例如,即使是简单的事情,例如

hive> select * from date;
解析完成后,

产生相同的错误:

  

从日期中选择*   线程“main”中的异常java.lang.NoSuchMethodError:org.apache.hadoop.hive.ql.parse.ASTNode.setUnknownTokenBoundaries()V       在org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:214)       在org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)       在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:389)       在org.apache.hadoop.hive.ql.Driver.compile(Driver.java:303)       在org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1067)       在org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1129)       在org.apache.hadoop.hive.ql.Driver.run(Driver.java:1004)       在org.apache.hadoop.hive.ql.Driver.run(Driver.java:994)       在org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:247)       在org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:199)       在org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:410)       在org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:783)       在org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)       在org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       at java.lang.reflect.Method.invoke(Method.java:606)       在org.apache.hadoop.util.RunJar.run(RunJar.java:221)       在org.apache.hadoop.util.RunJar.main(RunJar.java:136)

以下是日志:

  

15/09/02 08:55:12 [main]:INFO hive.metastore:连接到Metastore。   15/09/02 08:55:12 [main]:INFO session.SessionState:创建的本地目录:/ home / ETRI / hive / tmpdir / ETRI / f128f3e2-998f-4463-aa1b-8649db186945_resources   15/09/02 08:55:12 [main]:INFO session.SessionState:创建的HDFS目录:/ tmp / hive / ETRI / f128f3e2-998f-4463-aa1b-8649db186945   15/09/02 08:55:12 [main]:INFO session.SessionState:创建的本地目录:/ home / ETRI / hive / tmpdir / ETRI / f128f3e2-998f-4463-aa1b-8649db186945   15/09/02 08:55:13 [main]:INFO session.SessionState:创建的HDFS目录:/tmp/hive/ETRI/f128f3e2-998f-4463-aa1b-8649db186945/_tmp_space.db   15/09/02 08:55:13 [main]:INFO session.SessionState:此时不需要Tez会话。 hive.execution.engine =先生。   15/09/02 08:55:13 [main]:INFO log.PerfLogger:   15/09/02 08:55:13 [main]:INFO log.PerfLogger:   15/09/02 08:55:13 [main]:INFO ql.Driver:禁用并发模式,不创建锁管理器   15/09/02 08:55:13 [main]:INFO log.PerfLogger:   15/09/02 08:55:13 [main]:INFO log.PerfLogger:   15/09/02 08:55:13 [main]:INFO parse.ParseDriver:解析命令:show tables   15/09/02 08:55:13 [main]:INFO parse.ParseDriver:Parse Completed   15/09/02 08:55:13 [主要]:INFO log.PerfLogger:

我根据以下链接管理了配置。

cloudera Mysql hive config

我想知道如何处理这个setUnknownTokenBoundaries()V方法?

我没有更改ql.parse中的任何方法,因为它们是内部的。

非常感谢。

2 个答案:

答案 0 :(得分:0)

这不是Hive或mysql连接器的问题。

java.lang.NoSuchMethodError在针对一个版本的库进行编译但针对不同版本运行时发生。尝试更新Java版本并在Hadoop上设置环境变量并尝试运行Hive。

答案 1 :(得分:0)

我认为所述问题也可能是Hive及其对ANTLR依赖的更普遍问题。就我而言,问题不是因为某些环境变量而是因为ANTLR包含在使用Spark的应用程序的类路径中,包括Hive及其依赖项。

ASTNode(Hive的一部分)正在扩展CommonTree(ANTLR的一部分)。它继承了方法setUnknownTokenBoundaries,它存在于较新版本的ANTLR中,如3.5.x但在3.1.x中没有。排除ANTLR依赖关系解决了这个问题。