2016-07-15 82 views
0

我已經成功地從sqoop導入數據到hive。我在Oracle中添加了一列,並再次使用sqoop-import將特定列導入hive。但是,它追加到第一列數據,其餘列爲空,並且沒有新列進入配置單元。任何人都可以解決問題。sqoop-hive導入添加額外列

回答

0

不考慮您的import聲明,我假設您在第二次導入時嘗試附加到現有導入,但僅使用--columns--append參數導入新列。它不會以這種方式工作,因爲它將追加到文件末尾的文件而不是每行的末尾。

您將需要使用--hive-overwrite覆蓋hdfs中的現有數據;並修改配置單元表來添加額外的列。或者直接刪除配置單元表並在sqoop命令中使用--create-hive-table

所以你import命令應該是這樣的:

sqoop --import \ 
     --connect $CONNECTION_STR \ 
     --username $USER \ 
     --password $PASS \ 
     --table $ORACLE_TABLE \ 
     --hive-import \ 
     --hive-overwrite \ 
     --hive-table \ 
     --hive-home $HIVE_HOME \ 
     --hive-table $HIVE_TABLE 

變化值,以環境的實際值

+0

我認爲「--hive覆寫」這將刪除整個表,並再次重新進行吧?這導致了性能問題。 –

+0

同意但你不會每天添加列。這將每年一次或可能在一個月內。我沒有看到任何可以實現您的要求的其他直接sqoop選項。 –

+0

也hdfs不允許修改文件,但允許追加 - 所以sqoop將無法做修改。如果追加現有數據將不會添加列值 –