2013-10-16 54 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'