当前位置: 代码迷 >> 综合 >> ERROR sqoop.Sqoop: Error while expanding arguments
  详细解决方案

ERROR sqoop.Sqoop: Error while expanding arguments

热度:53   发布时间:2023-10-19 10:37:27.0

错误场景:
使用sqoop --options-file脚本打包执行时出现的错误。
错误截取如下:

19/09/22 01:35:04 ERROR sqoop.Sqoop: Error while expanding arguments
java.lang.Exception: Malformed option in options file(sq_expToMysql.opt): export --connect jdbc:mysql://chdp11:3306/test --username root --password root --table stu --columns "name,age" --num-mappers 1 --export-dir /sqoop/data  --input-fields-terminated-by "\t"at org.apache.sqoop.util.OptionsFileUtil.removeQuoteCharactersIfNecessary(OptionsFileUtil.java:170)at org.apache.sqoop.util.OptionsFileUtil.removeQuotesEncolosingOption(OptionsFileUtil.java:136)at org.apache.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:90)at com.cloudera.sqoop.util.OptionsFileUtil.expandArguments(OptionsFileUtil.java:33)at org.apache.sqoop.Sqoop.runTool(Sqoop.java:199)at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
Malformed option in options file(sq_expToMysql.opt): export --connect jdbc:mysql://chdp11:3306/test --username root --password root --table stu --columns "name,age" --num-mappers 1 --export-dir /sqoop/data  --input-fields-terminated-by "\t"
Try 'sqoop help' for usage.

关键信息:

 Error while expanding arguments

脚本文件如下

export \
--connect jdbc:mysql://chdp11:3306/test \
--username root \
--password root \
--table stu \
--columns "name,age" \
--num-mappers 1 \
--export-dir /sqoop/data  \
--input-fields-terminated-by "\t"

解决方案
一般在控制台书写较长的脚本代码时会用反斜杠(’\‘)进行行分割以增加可视性,但在打包成执行脚本文件时需要去除反斜杠,否则会被认为是相关传入参数。
也就是最后的书写如下:

 export
--connect jdbc:mysql://chdp11:3306/test
--username root
--password root
--table stu
--columns "name,age"
--num-mappers 1
--export-dir /sqoop/data
--input-fields-terminated-by "\t"

而后就可以用/usr/SFT/sqoop-1.4.6/bin/sqoop --options-file sq_expToMysql.opt(j脚本文件名:sq_expToMysql.opt)开行的执行了。

  相关解决方案