我有要求使用hive-exex jar中的以下類來解析hive查詢:org.apache.hadoop.hive.ql.parse.ParseDriver org。 apache.hadoop.hive.ql.parse.ASTNode,org.apache.hadoop.hive.ql.parse.ParseUtils,org.apache.hadoop.hive.ql.parse.HiveParser。解析配置單元查詢時出現NoViableAltException異常(281 @ [])
for accessing these classes from hive-exec jar i am using following maven dependency in my project :
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>0.13.1-cdh5.3.0</version>
</dependency>
我的蜂巢查詢分析工具工作在幾乎所有情況下,但令人驚訝的在下面的查詢時失敗:
INSERT INTO db_lineage.many_one_hv SELECT * FROM(SELECT * FROM db_lineage.one_many1_hv UNION ALL SELECT * FROM db_lineage.one_many2_hv)FINAL;
是越來越成功執行該查詢蜂巢星團與0.14版和1.2,但在我的本地系統的失敗對我,我得到的是當地的System.Exception如下: NoViableAltException(281 @ []) 在組織.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:36959) at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:36865) at org.apache .hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5463) 在org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:3931) 在org.apache.hadoop .hive.ql.parse.HiveParser_F romClauseParser.joinSource(HiveParser_FromClauseParser.java:1798) 在org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1456) 在org.apache.hadoop.hive.ql.parse.HiveParser。 fromClause(HiveParser.java:40272) at org.apache.hadoop.hive.ql.parse.HiveParser.singleSelectStatement(HiveParser.java:38160) at org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement( HiveParser.java:37845) at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:37745) at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser。 java:36989) at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:36865) at org.apache.hadoop.hive.ql .parse.HiveParser.execStatement(HiveParser.java:1332) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1030) at org.apache.hadoop.hive.ql.parse .ParseDriver.parse(ParseDriver.java:199) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) at org.apache.hadoop.hive.ql.parse.ParseDriver .parse(ParseDriver.java:161) 在com.abc.bigsuite.parser.ECatHiveParser.parse(ECatHiveParser.java:39) 在com.abc.bigsuite.parser.HiveParserTest.testIssue1(HiveParserTest.java:494) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable。運行(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
[ERROR] com.datametica.bigsuite.parser.ECatHiveParser - 異常在上述查詢 org.apache.hadoop.hive.ql解析.parse。ParseException:行1:12缺少TABLE'db_lineage'附近'('在子查詢源 行1:50無法識別接近'(''SELECT''*'在子查詢源 在org.apache.hadoop.hive。在org.apache.hadoop.hive.ql上的ql.parse.ParseDriver.parse(ParseDriver.java:202)〜[hive-exec-0.13.1-cdh5.3.0.jar:0.13.1-cdh5.3.0] 。 parse.ParseDriver.parse(ParseDriver.java:166)〜[hive-exec-0.13.1-cdh5.3.0.jar:0.13.1-cdh5.3.0] at org.apache.hadoop.hive.ql.parse。 ParseDriver.parse(ParseDriver.java:161)〜[hive-exec-0.13.1-cdh5.3.0.jar:0.13.1-cdh5.3.0] at com.abc.bigsuite.parser.ECatHiveParser.parse(ECatHiveParser。的java:39)〜[類/:NA] 在com.abc.bigsuite.parser.HiveParserTest.testIssue1(HiveParserTest.java:494)[測試類/:NA] 在sun.reflect.NativeMethodAccessorImpl.invoke0(母語中號(Unknown Source)〜[na:1.7.0_80] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)〜[na:1.7.0_80] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)〜[na:1.7.0_80] 0_80] at java.lang.reflect.Method.invoke(Unknown Source)〜[na:1.7.0_80] at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50)[junit-4.12 .jar:4.12] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)[junit-4.12.jar:4.12] at org.junit.runners.model.FrameworkMethod.invokeExplosively( FrameworkMethod.java:47)[junit-4.12.jar:4.12]
我從不連接到配置單元羣集或任何數據庫,我的實用程序是獨立解析配置單元查詢和檢索只有通過使用hive-exec依賴關係才能實現源節點和目標節點。請讓我知道您是否可以提供任何輸入。
感謝和問候, Mahendra Tonape。
解析命令時出現的異常如下: –
您可以共享您正在查詢的hiveql嗎?它看起來像你查詢一個不存在的表。 –