簡體   English   中英

使用 ALTER 添加新列后,數據錯誤地加載到 Hive 分區表中

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

我已經有一個 Hive 分區表。 我需要向表中添加一個新列,因此我使用 ALTER 添加如下所示的列。

ALTER TABLE TABLE1 ADD COLUMNS(COLUMN6 STRING);

我有這樣的最終表加載查詢:

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);"

現在,當我今天的工作運行時,當我嘗試查詢最終表時,出現以下錯誤

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

我可以找出分區列周圍發生的問題,但無法弄清楚出了什么問題..有人可以幫忙嗎?

分區列應該是選擇中的最后一個。 當您添加新列時,它被添加為最后一個非分區列,分區列仍然是最后一個,它們不存儲在數據文件中,只有元數據包含有關分區的信息。 所有其他列的順序也很重要,它應該匹配表 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)
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM