我有一个现有的外部表,例如yyyyy,它包含n个列,这个表每天都加载一个分区列作为extract\u 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 x.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
查询正在运行。
使用alter命令向新创建的表中添加其他字段,然后执行以下操作 MSCK REPAIR TABLE TABLE NAME;
在 Impala :
REFRESH TABLE TABLE NAME; INVALIDATE METADATA TABLE NAME;
这一次,在hive select查询工作,但在impala中得到了上述错误。
有人能告诉我为什么会这样,以及如何解决这个问题吗。
Impala 贝壳v2.12.0-cdh5.16.2
暂无答案!
目前还没有任何答案,快来回答吧!