2016-02-06 81 views
0

我已經從SQL Server加載到Hive上的一個巨大的表。我犯的錯誤是我在HIVE中創建了表格作爲內部表格。任何人都可以提出任何破解,以便我可以改變表結構,而不會丟失數據。數據是巨大的,我不能再次從源出口數據。保留數據,同時刪除配置單元內部表

現在的問題是,由於列順序不匹配SQL服務器表,很多列顯示NULL。

任何幫助將不勝感激。

回答

0

我沒有看到任何問題在內部表上使用修改表。 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTable/Partition/Column

另一個(但不推薦)選項是打開您的配置單元Metastore(HCatalog)並在其中應用更改。 Hive從關係數據庫讀取模式信息(在Hadoop設置期間配置,默認爲MySQL)。在這個MySQL中,你可以嘗試改變一些設置。但是,這是不推薦的,因爲有一個錯誤,你可以擰你的整個Hive數據庫。

最安全的方法是創建一個新表,並使用現有的源

create table new_table 
as 
select 
[...] 
from existing_table 
+0

是。謝謝Stefan。我將嘗試創建表格的副本並以正確的順序移動數據。 – Tammy

+0

如果您想測試沙盒中的ALTER更改:在測試HDFS目錄上創建一個測試「EXTERNAL」表「LOCATED」;複製該目錄中的物理數據文件的一個*那麼你可以做一些試驗和錯誤。 –

+0

順便說一句,你的問題的替代答案是:創建EXTERNAL表w /完全相同的結構,但位於不同的目錄,然後將所有物理文件移動到該目錄。原來的桌子現在是「空的」,你可以放鬆休息。 –

相關問題