使用 ALTER 添加新列后,数据错误地加载到 Hive Partitioned table

Data Loaded wrongly into Hive Partitioned table after adding a new column using ALTER

我已经有一个分区的 Hive table。我需要向 table 添加一个新列,所以我使用 ALTER 添加如下列。

ALTER TABLE TABLE1 ADD COLUMNS(COLUMN6 STRING);

我有这样的最终 table 加载查询:

INSERT OVERWRITE table Final table  PARTITION(COLUMN4, COLUMN5)
select
stg.Column1,
stg.Column2,
stg.Column3,
stg.Column4(Partition Column),Field Name:Code Sample value - YAHOO.COM
stg.Column5(Partition Column),Field Name:Date Sample Value - 2021-06-25
stg.Column6(New Column)       Field Name:reason     sample value - Adjustment
from (
         select fee.* from (
             select 
               fees.* , 
               ROW_NUMBER() OVER (PARTITION BY fees.Column1 ORDER BY fees.Column3 DESC) as RNK
             from Stage table fee
         ) fee
         where RNK = 1
     ) stg
     left join (
         select Column1 from Final table
         where Column5(date) in (select distinct column5(date) from Stage table)
     ) TGT
     on tgt.Column1(id) = stg.Column1(id) where tgt.column1 is null 
UNION
select 
tgt.column1(id),
tgt.column2,
tgt.column3,
tgt.column4(partiton column),
tgt.column5(partiton column-date),
tgt.column6(New column)
from 
Final Table TGT
      WHERE TGT.Column5(date) in (select distinct column5(date) from Stage table);"

现在,当我今天 运行 工作时,当我尝试查询最终 table 时,出现以下错误

Invalid partition value 'Adjustment' for DATE partition key: Code=2021-06-25/date=Adjustment

我能找出分区列周围发生的错误,但无法找出问题所在。有人可以帮忙吗?

分区列应该是 select 中的最后一个。当您添加新列时,它被添加为最后一个非分区列,分区列仍然是最后一个,它们不存储在数据文件中,只有元数据包含有关分区的信息。所有其他列顺序也很重要,它应该匹配 table DDL,使用 DESCRIBE FORMATTED table_name.

检查它
INSERT OVERWRITE table Final table  PARTITION(COLUMN4, COLUMN5)
select
stg.Column1,
stg.Column2,
stg.Column3,
stg.Column6 (New column) ------------New column
stg.Column4(Partition Column)  ---partition columns
stg.Column5(Partition Column)
...