2013-10-16 81 views
0

我是新來的Hadoop和邊練sqoop我有此錯誤消息,我已經使用的命令是 我創建了一個import.txt文件和我使用的 import --connect jdbc:mysql://localhost/hadoopdb --username hadoop -P和放置在此文件在HDFS上。Hadoop的sqoop錯誤,而使用數據導入選項文件

在導入時,我使用--options-file命令將此文件提供給sqoop工具。所以最後的命令我在命令PROMT給予如下,

sqoop --options-file /user/cloudera/import.txt --table employee 

hiting回車鍵我有以下錯誤消息

sqoop --options-file /user/cloudera/import.txt --table employee 
    13/10/16 13:43:12 ERROR sqoop.Sqoop: Error while expanding arguments 




java.lang.Exception: Unable to read options file: /user/cloudera/import.txt 
    at org.apache.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:102) 
    at com.cloudera.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:33) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:201) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 
Caused by: java.io.FileNotFoundException: /user/cloudera/import.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at java.io.FileReader.<init>(FileReader.java:55) 
    at org.apache.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:70) 
    ... 4 more 
Unable to read options file: /user/cloudera/import.txt 

誰能告訴我,爲什麼錯誤的是未來的後。

在此先感謝。

+0

具有u檢查讀取和執行文件的權限用戶? –

回答

2

- 選擇文件路徑應該是本地目錄。不要使用HDFS目錄。

sqoop --options-file /home/cloudera/import.txt --table employee 
1

我得到了同樣的問題。我用下面的方法解決了它。 選項文件就不得不提到的工具,命令及其參數由線

在你的情況行,請在選項文件「IMPORT.TXT」應該是這樣的

$cat > import.txt 
import 
--connect 
jdbc:mysql://localhost/hadoopdb 
--username 
hadoop 
-P 

您創建的創建後,選項文件,你可以使用它來導入表格

sqoop --options-file /user/cloudera/import.txt --table employee 

希望這個工程。關鍵是你必須逐行提及工具和參數。 更多的瞭解這個參考這個鏈接

Sqoop User Guide by Apache.org

糾正我,如果我錯了。

0

如果您從Oozie調用Sqoop並且面臨相同的問題 - 無法讀取選項文件。

然後,您需要將選項文件放在工作流位置中,並在sqoop動作文件中指定文件,並且還需要將該文件的權限更改爲chmod 674(當工作流在oozie中運行時,它將與sqoop用戶,所以它是強制更改權限)。

這將解決該錯誤。

0

我把選項文件放在本地目錄中,它工作。 也 論據和價值應該在不同的路線。 像

--where 'SAL> 5000'

,而不是像 --where 'SAL> 5000'