[HADOOP] 하이브 1.2 테이블 변경을 통해 파티션을 복구 할 수 없음
HADOOP하이브 1.2 테이블 변경을 통해 파티션을 복구 할 수 없음
나는 ALTER TABLE MY_EXTERNAL_TABLE이 파티션 복구를 실행할 수 없습니다입니다; 내가 대체 MSCK 수리 표를 실행할 때 하이브 1.2에, 그러나 그것의 단지 하이브 메타 스토어에 존재하지 않는 파티션을 나열하고 추가하지 MY_EXTERNAL_TABLE. 하이브 간부의 소스 코드를 기반으로 아래에 볼 수 있어요 조직 / 아파치 / 하둡 / 하이브 / QL / 해석 / HiveParser.g : 1001 : 파티션 복구를위한 문법에는 토큰 일치를 프로그래머없는 일.
친절 하이브 1.2에 외부 테이블을 생성 한 후 모든 파티션을 복구 할 수있는 방법이 있다면 알려주세요.
ALTER TABLE MY_EXTERNAL_TABLE이 파티션을 복구하기위한 스택 추적; :
NoViableAltException(26@[])
at org.apache.hadoop.hive.ql.parse.HiveParser.alterTableStatementSuffix(HiveParser.java:7946)
at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7409)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2693)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1658)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1117)
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:431)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:316)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1189)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1237)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1126)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1116)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:216)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:168)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:379)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:739)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:624)
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 1:45 cannot recognize input near 'recover' 'partitions' '<EOF>' in alter table statement
주 : 하둡과 하이브 1.2 스토리지, HDP 2.4 S3을 사용하고있다.
해결법
-
==============================
1.약간의 시간 디버깅을 지출하는 것은 수정을 얻었다 후 안녕, 이유는 내 파티션 이름은 낙타의 경우했다대로, MSCK을 통해 파티션을 추가하지 않은 것입니다 (파일 시스템은 대소 문자를 구분하지만, 하이브 취급하는 모든 파티션 열 이름을 소문자로)는, 그러나 한 번 만들어 소문자로 내 파티션 경로는 그것이 마치 마법처럼 작동합니다.
약간의 시간 디버깅을 지출하는 것은 수정을 얻었다 후 안녕, 이유는 내 파티션 이름은 낙타의 경우했다대로, MSCK을 통해 파티션을 추가하지 않은 것입니다 (파일 시스템은 대소 문자를 구분하지만, 하이브 취급하는 모든 파티션 열 이름을 소문자로)는, 그러나 한 번 만들어 소문자로 내 파티션 경로는 그것이 마치 마법처럼 작동합니다.
from https://stackoverflow.com/questions/39661532/not-able-to-recover-partitions-through-alter-table-in-hive-1-2 by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 이 하이브의 컬럼에 대한 기본 키를 만들기 위해 어떻게 다른가요? (0) | 2019.10.21 |
---|---|
[HADOOP] 하둡에서 개별 노드에 사용 DFS를 얻기를위한 나머지 API 광고 (0) | 2019.10.21 |
[HADOOP] 하둡, 소켓 시간 초과 오류 (0) | 2019.10.21 |
[HADOOP] 내가 어떻게 boto3 사용하여 EMR 클러스터를 기존의 보안 구성을 적용합니까? (0) | 2019.10.21 |
[HADOOP] 스파크는 피닉스을 확보하기 위해 연결할 수 없습니다 (0) | 2019.10.21 |