我使用类似于以下的语句基于 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。