0

我是hadoop的新手,在练习sqoop时我收到了这个错误消息,我使用的命令是我创建了一个import.txt文件,并且我使用 import --connect jdbc:mysql://localhost/hadoopdb --username hadoop -P并将这个文件放在HDFS上。

导入时,我已使用命令将此文件提供给 sqoop 工具--options-file。所以我在命令提示符下给出的最终命令如下,

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

谁能告诉我为什么会出现错误。

提前致谢。

4

6 回答 6

2

--option-file 路径应该是本地目录。不要使用 HDFS 目录。

 sqoop --options-file /home/cloudera/import.txt --table employee
于 2014-05-05T14:43:31.353 回答
1

我遇到了同样的问题。我使用以下方法解决了它。在选项文件中,您必须逐行提及工具、命令及其参数

在您的情况下,您的选项文件“import.txt”应该像这样创建

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

创建选项文件后,您可以使用它来导入表

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

希望这有效。关键是您必须逐行提及工具和参数。有关此的更多理解,请参阅此链接

Apache.org 的 Sqoop 用户指南

如果我错了,请纠正我。

于 2016-03-09T14:39:18.580 回答
0

如果您从 Oozie 调用 Sqoop 并且遇到同样的问题 - 无法读取选项文件。

然后您需要将选项文件放在工作流位置并在 sqoop 操作文件中指定文件,还需要将该文件的权限更改为 chmod 674(当工作流在 oozie 中运行时,它将与 sqoop 用户一起运行,所以它必须更改权限)。

这将解决错误。

于 2017-01-30T08:44:43.750 回答
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 文件数据时,我收到了上述错误。

当我在不同的行中定义每个参数和值时,问题解决了,如下所示。

在此处输入图像描述

于 2019-01-13T14:09:17.787 回答
0

我将选项文件放在本地目录中,它起作用了。参数和值也应该在不同的行中。喜欢

--where'sal > 5000'

而不像 --where 'sal > 5000'

于 2017-03-12T02:40:08.487 回答
-1

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

进口

- 连接

“jdbc:mysql://localhost:3306/sakila”

--用户名根

-P

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

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

sqoop --options-file "你的选项文件位置" --table abc

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

谢谢,苏雷什。

于 2018-04-25T13:58:47.360 回答