2016-09-23 10 views
0

ALTER TABLE MY_EXTERNAL_TABLE RECOVER PARTITIONS;をハイブ1.2に実行できませんが、代わりのMSCK REPAIR TABLE MY_EXTERNAL_TABLEを実行すると、ハイブ・メタ・ストアには存在しないパーティションが表示され、追加されません。 hive-execのソースコードに基づいて、org/apache/hadoop/hive/ql/parse/HiveParser.g:1001:1の下にあることがわかります。これは、RECOVER PARTITIONSの文法に一致するトークンがありません。Hive 1.2のalter tableでパーティションを回復できません

Hive 1.2で外部表を作成した後で、すべてのパーティションをリカバリする方法を教えてください。 ALTER TABLE MY_EXTERNAL_TABLE RECOVER PARTITIONS;ため

スタックトレース:

NoViableAltException([email protected][]) 
    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 

注:Hadoopのとハイブ1.2のために、ストレージとしてHDP 2.4をS3を使用しています。

答えて

1

こんにちは、私のパーティション名は大文字小文字の区別があったため、MSCKでパーティションを追加していなかったため、デバッグに時間がかかりました。FileSystemでは大文字と小文字が区別されますが、しかし、かつて私のパーティションパスを小文字で作ったのは、魅力のように機能します。

関連する問題