hadoop sqoop error while importing data using options file
我是hadoop的新手,在练习sqoop时收到此错误消息,我使用的命令是
我创建了一个
导入时,我已经使用
1 | sqoop --options-file /user/cloudera/import.txt --table employee |
按下回车键后,我收到以下错误消息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 |
谁能告诉我为什么会出现错误。
提前致谢。
--option-file路径应为本地目录。不要使用HDFS目录。
1 | sqoop --options-file /home/cloudera/import.txt --table employee |
我有同样的问题。我使用以下方法解决了它。
在选项文件中,您必须逐行提及工具,命令及其参数
在您的情况下,应按以下方式创建选项文件" import.txt"
1 2 3 4 5 6 7 | $cat > import.txt import --connect jdbc:mysql://localhost/hadoopdb --username hadoop -P |
创建选项文件后,可以使用它导入表
1 | sqoop --options-file /user/cloudera/import.txt --table employee |
希望这行得通。关键是您必须逐行提及工具和参数。
有关此的更多理解,请参考此链接
Sqoop用户指南,由Apache.org提供
如果我错了,请纠正我。
1 2 3 4 5 6 | [cloudera@quickstart sqoop]$ sqoop --options-file /home/cloudera/Desktop/SqoopOptions.txt --table departments --username root -- password cloudera -m 1 --target-dir jan1301 Warning: /usr/lib/sqoop/../accumulo does not exist! Accumulo imports will fail. Please set $ACCUMULO_HOME to the root of your Accumulo installation. No such sqoop tool: import --connect jdbc:mysql://localhost/retail_db --username root --password cloudera. See 'sqoop help'. |
我在一行中定义SqoopOptions.txt文件数据时收到上述错误。
当我在下面的不同行中定义每个参数和值时,该问题已解决。
我将选项文件放在本地目录中,它起作用了。
也
参数和值应在不同的行中。
喜欢
- 哪里
``sal> 5000''
而且不喜欢
-其中" sal> 5000"
如果您是从Oozie呼叫Sqoop,并且遇到相同的问题-无法读取选项文件。
然后,您需要将选项文件放在工作流位置中,并在sqoop操作文件中指定该文件,还需要将该文件的权限更改为chmod 674(当工作流在oozie中运行时,它将与sqoop用户一起运行,因此必须更改许可)。
这样可以解决错误。
如果要在单节点群集上尝试,则可以将选项文件放在本地文件系统下。
您的选项文件应该是这样的。
进口
-连接
" jdbc:mysql:// localhost:3306 / sakila"
--username根
-P
对于每个参数,应该有一个下一行。
保存选项文件后,请使用以下命令。
sqoop --options-file"您的optionfile位置" --table abc
希望此方法可以正常工作,因为此选项对我来说非常有效。
谢谢,
苏雷士