-- 外部表的情況:
--不管有沒有加cascade字段,新寫的分區數據中都會顯示新加字段的值。
--針對於舊分區,如果加了cascade,那么覆寫舊分區的數據后,新字段可以直接select出來。
-- 如果不加cascade,覆寫舊分區的數據后,新字段仍然是null,
-- 解決辦法1:需要對以前的舊分區執行drop分區然后“add分區或者msck repair”后,才可以select出來。(推薦這種)
-- 解決辦法2:需要對以前的舊分區執行alter table tb_name partition (dt=...) add columns(new_field string)后,才可以select出來。(不推薦這種,因為,如果添加多個字段且都沒有指定cascade,那么必須將所有字段都add columns操作,才能看到正確的數據。如果只添加某一個字段(比如最后一個字段),那么實際select出來后,顯示出來的是按照desc table順序的第一個新字段,這里比較迷惑人。所以還是不如第一種解決辦法一步到位)
-- 內部表的情況:
--不管有沒有加cascade字段,新寫的分區數據中都會顯示新加字段的值。
--針對於舊分區,如果加了cascade,那么覆寫舊分區的數據后,新字段可以直接select出來。
-- 如果不加cascade,覆寫舊分區的數據后,新字段仍然是null,
-- 解決辦法:需要對以前的舊分區執行alter table tb_name partition (dt=...) add columns(new_field string)后,才可以select出來。千萬不能drop partition,因為是內部表,會直接刪除數據的。