gpt4 book ai didi

hadoop - 无法通过 Hive 1.2 中的 alter table 恢复分区

转载 作者:可可西里 更新时间:2023-11-01 16:42:21 25 4
gpt4 key购买 nike

我无法在配置单元 1.2 上运行 ALTER TABLE MY_EXTERNAL_TABLE RECOVER PARTITIONS;,但是当我运行替代方案时 MSCK REPAIR TABLE MY_EXTERNAL_TABLE 它只是列出了分区' 在 Hive Meta Store 中并且没有添加它。根据 hive-exec 的源代码,我可以在 org/apache/hadoop/hive/ql/parse/HiveParser.g:1001:1 下看到语法中没有用于 RECOVER 的标记匹配分区。

如果有办法在 Hive 1.2 上创建外部表后恢复所有分区,请告诉我。

ALTER TABLE MY_EXTERNAL_TABLE RECOVER PARTITIONS; 的堆栈跟踪:

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

注意:我使用 S3 作为存储,HDP 2.4 用于 hadoop 和 Hive 1.2。

最佳答案

您好,经过一些调试后得到了修复,原因是它不是通过 MSCK 添加分区,因为我的分区名称是驼峰式的(文件系统区分大小写,但 hive 将所有分区列名称视为小写),然而,一旦将我的分区路径设为小写,它就很有魅力了。

关于hadoop - 无法通过 Hive 1.2 中的 alter table 恢复分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39661532/

25 4 0