2

我使用类似于以下的语句基于 S3 中的分区 Parquet 文件创建了一个外部 Hive 表:

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

该表已创建并运行DESCRIBE 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     |
+--------------------------+------------+----------+--+

但是,当我使用直线查询表时,它返回零记录。我想我需要刷新 Hive Metastore 中的分区信息。

所以我运行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)

我是否走在正确的道路上,为什么会发生此错误?

Hive 版本是 2.3.6。

4

1 回答 1

0

Amazon Elastic MapReduce (EMR) 的 Hive 版本上的等效命令是:

ALTER TABLE table_name RECOVER PARTITIONS;

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

于 2020-03-13T09:48:36.290 回答