ANTLR의 일부 오류 해결 방안
오류 1:
2013-04-27 16:34:53,116 ERROR ql.Driver (SessionState.java:printError(401)) - FAILED: RewriteEmptyStreamException token valueList
org.antlr.runtime.tree.RewriteEmptyStreamException: token valueList
at org.antlr.runtime.tree.RewriteRuleElementStream._next(RewriteRuleElementStream.java:158)
at org.antlr.runtime.tree.RewriteRuleTokenStream.next(RewriteRuleTokenStream.java:57)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionValuesExper(HiveParser.java:17876)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionExper(HiveParser.java:17569)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionTemplate(HiveParser.java:17306)
at org.apache.hadoop.hive.ql.parse.HiveParser.tablePartition(HiveParser.java:16794)
at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:3783)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:1836)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:959)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:644)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:439)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:416)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:335)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:893)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
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:616)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
해결 방법:
이 문제는 값 정의가 잘못되어 잘못된 코드 정의가 발생했기 때문입니다.
partitionValuesExper
@init { msgs.push(" partitionValuesExper specification"); }
@after { msgs.pop(); }
:KW_VALUES KW_LESS KW_THEN LPAREN value=stringOrNumOrFunc RPAREN
-> ^(TOK_VALUES_LESS $value )
|KW_VALUES KW_GREATER KW_THEN LPAREN value=stringOrNumOrFunc RPAREN
-> ^(TOK_VALUES_GREATER $value )
| KW_VALUES LPAREN valueList=(stringOrNumOrFuncList)
RPAREN
-> ^(TOK_VALUES $valueList )
오류 발생
KW_VALUES LPAREN valueList=(stringOrNumOrFuncList) RPAREN
괄호를 빼고 다음으로 변경합니다.
valueList=stringOrNumOrFuncList
오류 2:
”reference to rewrite element tableSubPartition without reference on left of ->“
보통 이 오류는 Decision can match input such as "..."와 함께 발생합니다.다중 대안 사용 오류 발생
해결 방법:
오류의 원인은 LL문법의 정의에 불복하기 때문이다. 특히 잘못된 의미의 단편 정의 사본은 identity 등 변수 정의가 있어 상태기에 잘못된 뜻을 일으키게 한다. 해결 방법은 같은 부분을 추출하여 층을 나누어 정의하면 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.