在外部配置单元表(配置单元2.3.6)上执行msck修复表时出错

kt06eoxx  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(388)

我已经基于s3中的分区Parquet文件创建了一个外部配置单元表,使用类似于以下语句:

CREATE EXTERNAL TABLE default.person
(
    first_name STRING,
    last_name STRING
)
PARTITIONED BY (age INT)
STORED AS parquet
LOCATION 's3a://default/person.parquet'"

表已创建并运行descripe table default.person显示:

+--------------------------+------------+----------+--+
|         col_name         | data_type  | comment  |
+--------------------------+------------+----------+--+
| first_name               | string     | NULL     |
| last_name                | string     | NULL     |
| # Partition Information  |            |          |
| # col_name               | data_type  | comment  |
| age                      | int        | NULL     |
+--------------------------+------------+----------+--+

但是,当我用beeline查询表时,它返回零条记录。我想我需要刷新配置单元元存储中的分区信息。
因此,我运行了msck repair table default.person,但它失败了,出现以下错误:

Error: java.lang.NoSuchMethodException: org.apache.hadoop.hive.ql.metadata.Hive.alterTable(java.lang.String, org.apache.hadoop.hive.ql.metadata.Table) (state=,code=0)

我走的路对吗?为什么会发生这种错误?
配置单元版本是2.3.6。

wpcxdonn

wpcxdonn1#

amazon elastic mapreduce(emr)版本的hive上的等效命令是:

ALTER TABLE table_name RECOVER PARTITIONS;

有关详细信息,请参阅恢复分区手册。

相关问题