我有一个现有的外部表,例如YYYYYY,其中包含n个列,并且该表每天都以分区列作为extract_date加载。
我们收到了企业的请求,要求在现有表格中再添加几列。为了实现这一点,我们做了以下事情。
DROP existing partitions from Hive
alter table xxxx.yyyyyy add columns (
`c10` string COMMENT '',
`b` string COMMENT '',
`c11` string COMMENT '',
`c12` string COMMENT '',
`c13` string COMMENT '',
`c14` string COMMENT '',
`c15` string COMMENT '') CASCADE;
alter table xxxx.yyyyyyy change `c8` `c8` string COMMENT '' after `c7` CASCADE;
完成上述两个步骤之后,我去了Hive,做了MSCK REPAIR TABLE xxxx.yyyyyy;
添加了分区(有2018年的分区)以及我的新字段。
在进行更改之前,我能够从Impala和Hive都查询数据,但是在执行ALTER
命令之后,出现以下错误。
> select * from xxxx.yyyyyyy where extract_date like '2019%';
Query: select * from XXXXX.YYYYYYY where extract_date like '2019%'
Query submitted at: 2020-05-09 11:57:10 (Coordinator: ' xxxx.yyyyyyy .c9'. Column type: STRING, Parquet schema:
optional fixed_len_byte_array a_auth [i:12 d:1 r:0]
在Hive中,我能够毫无问题地浏览数据。所以我只有在Impala中有问题。
故障排除步骤:
创建了没有附加列的新表,并将外部路径指向新表,并将先前创建的分区复制到新路径。
MSCK REPAIR TABLE TABLE NAME;
在Impala和Hive中,select
查询都可以正常工作。
MSCK REPAIR TABLE TABLE NAME;
在Impala中:
REFRESH TABLE TABLE NAME;
INVALIDATE METADATA TABLE NAME;
这一次在Hive中进行选择查询,但在Impala中出现了上述错误。
有人可以指导我为什么会这样以及如何解决此问题。
Impala Shell v2.12.0-cdh5.16.2