使用选项文件导入数据时出现hadoop sqoop错误

时间:2013-10-16 12:57:39

标签: sqoop

我是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

任何人都可以告诉我为什么错误即将来临。

提前致谢。

6 个答案:

答案 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文件数据时收到上述错误。

当我在下面的不同行中定义每个参数和值时,该问题已解决。

enter image description here

答案 5 :(得分:-1)

如果您正在尝试单节点群集,则可以将选项文件放在本地文件系统下。 你的选项文件应该是这样的。

进口

- 连接

&#34; JDBC:MySQL的://本地主机:3306 / sakila的&#34;

- 用户名root

-P

对于每个参数,应该有下一行空格。

保存选项文件后,请使用以下命令。

sqoop --options-file&#34;您的选项文件位置&#34; - 表abc

希望这应该有效,因为这个选项对我来说非常有用。

谢谢, 苏雷什。