2017-01-13 66 views
1

我執行下面的命令sqoopSqoop進口全表中特定數據庫蜂巢失敗

sqoop import-all-tables -m 1 \ 
--connect "jdbc:mysql://nn01.itversity.com:3306/retail_db" \ 
--username=retail_dba \ 
--password=itversity \ 
--hive-import \ 
--hive-home /apps/hive/warehouse \ 
--hive-overwrite \ 
--hive-database grv_sqoop_import \ 
--create-hive-table \ 
--compress \ 
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \ 
--outdir java_files 

正如我所指定的--hive-database表應該導入到它。但我發現了以下錯誤:

ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Ou 
tput directory hdfs://nn01.itversity.com:8020/user/gauravfrankly/categories already exists 

無法理解爲什麼它尋找到/user/gauravfrankly/ HDFS位置。

幫助理解這個問題,我在這裏錯過了什麼?

我也經歷了Getting an file exists error while import into Hive using sqoop,但想知道,有沒有其他更好的方法來處理它。

+0

你試過刪除'--create-hive-table'這個並運行? –

回答

0

當您導入數據到HDFS作爲蜂巢表,Sqoop首先在你的主目錄(你的情況/user/gauravfrankly/)具有相同的文件夾名稱創建一個臨時區域,它然後移動數據蜂房目錄。

因此,不應該有家庭位置中的任何目錄與您正在導入爲配置單元表的相同表名。如果它在那裏,它會給你同樣的錯誤。

解決方法是從家中刪除目錄,然後重試。

注意:只有當您導入爲配置單元表時,在導入到HDFS時不會發生暫存。

0

你可以嘗試這些:

  • 刪除此:--create-hive-table如果設置,則作業將失敗如果目標蜂巢 表退出。默認情況下,該屬性爲false。 並添加以下內容:--hive-overwrite覆蓋Hive表中的現有數據。

  • 請提供:--warehouse-dir <dir>表格目的地的HDFS父項。

+0

我已經在我的grv_sqoop_import數據庫中籤入了hive沒有創建表,所以我沒有看到--create-hive-table的問題。我已經通過刪除/ user/gauravfrankly/categories來完成它,在刪除它命令後運行良好。 –

+0

@Gauravverma yes這就是存儲數據的hdfs位置,'-rm -r'該位置,它將被完成。 –