0
我已經從SQL Server加載到Hive上的一個巨大的表。我犯的錯誤是我在HIVE中創建了表格作爲內部表格。任何人都可以提出任何破解,以便我可以改變表結構,而不會丟失數據。數據是巨大的,我不能再次從源出口數據。保留數據,同時刪除配置單元內部表
現在的問題是,由於列順序不匹配SQL服務器表,很多列顯示NULL。
任何幫助將不勝感激。
我已經從SQL Server加載到Hive上的一個巨大的表。我犯的錯誤是我在HIVE中創建了表格作爲內部表格。任何人都可以提出任何破解,以便我可以改變表結構,而不會丟失數據。數據是巨大的,我不能再次從源出口數據。保留數據,同時刪除配置單元內部表
現在的問題是,由於列順序不匹配SQL服務器表,很多列顯示NULL。
任何幫助將不勝感激。
我沒有看到任何問題在內部表上使用修改表。 (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
是。謝謝Stefan。我將嘗試創建表格的副本並以正確的順序移動數據。 – Tammy
如果您想測試沙盒中的ALTER更改:在測試HDFS目錄上創建一個測試「EXTERNAL」表「LOCATED」;複製該目錄中的物理數據文件的一個*那麼你可以做一些試驗和錯誤。 –
順便說一句,你的問題的替代答案是:創建EXTERNAL表w /完全相同的結構,但位於不同的目錄,然後將所有物理文件移動到該目錄。原來的桌子現在是「空的」,你可以放鬆休息。 –