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

hadoop sqoop error while importing data using options file

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

导入时,我已经使用--options-file命令将此文件提供给了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文件数据时收到上述错误。

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

enter image description here


我将选项文件放在本地目录中,它起作用了。

参数和值应在不同的行中。
喜欢

- 哪里
``sal> 5000''

而且不喜欢
-其中" sal> 5000"


如果您是从Oozie呼叫Sqoop,并且遇到相同的问题-无法读取选项文件。

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

这样可以解决错误。


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

进口

-连接

" jdbc:mysql:// localhost:3306 / sakila"

--username根

-P

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

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

sqoop --options-file"您的optionfile位置" --table abc

希望此方法可以正常工作,因为此选项对我来说非常有效。

谢谢,
苏雷士