我是hadoop的新手,在练习sqoop时,我收到了此错误消息,我使用的命令是
我创建了一个import.txt
文件,并使用了我
import --connect jdbc:mysql://localhost/hadoopdb --username hadoop -P
并将此文件放在HDFS上。
导入时我已使用--options-file
命令将此文件提供给sqoop工具。所以我在命令promt中给出的最后一个命令如下,
sqoop --options-file /user/cloudera/import.txt --table employee
在单击回车键后,我收到以下错误消息
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 :(得分:2)
- 选项文件路径应该是本地目录。不要使用HDFS目录。
sqoop --options-file /home/cloudera/import.txt --table employee
答案 1 :(得分:1)
我遇到了同样的问题。我用以下方法解决了它。 在选项文件中,您必须逐行提及工具,命令及其参数
在您的情况下,您的选项文件&#34; import.txt&#34;应该像这样创建
$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
如果我错了,请纠正我。
答案 2 :(得分:0)
如果您正在从Oozie调用Sqoop而您遇到同样的问题 - 无法读取选项文件。
然后你需要将选项文件放在工作流程位置并在sqoop action-files中指定文件,你还需要将该文件的权限更改为chmod 674(当工作流程在oozie中运行时,它将与sqoop一起运行用户因此必须更改权限。
这将解决错误。
答案 3 :(得分:0)
我把选项文件放在本地目录中,它有效。 也 争论和价值应该在不同的路线上。 像
- ,其中 'sal&gt; 5000'
而不喜欢 - 其中'sal&gt; 5000'
答案 4 :(得分:0)
[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文件数据时收到上述错误。
当我在下面的不同行中定义每个参数和值时,该问题已解决。
答案 5 :(得分:-1)
如果您正在尝试单节点群集,则可以将选项文件放在本地文件系统下。 你的选项文件应该是这样的。
进口
- 连接
&#34; JDBC:MySQL的://本地主机:3306 / sakila的&#34;
- 用户名root
-P
对于每个参数,应该有下一行空格。
保存选项文件后,请使用以下命令。
sqoop --options-file&#34;您的选项文件位置&#34; - 表abc
希望这应该有效,因为这个选项对我来说非常有用。
谢谢, 苏雷什。