shell执行sqoop命令错误

时间:2014-12-01 06:25:42

标签: shell sqoop

我想使用shell执行sqoop(1.4.5)命令。

壳: sqoop_cmd =“sqoop import --connect jdbc:mysql://xx.x.xxx.xxx:3306 / test --username test --password datagateway --query'select t.name from table_name t where date(hrc.gmt_modified )= date_sub(curdate(),间隔1天)和$ CONDITIONS' - target-dir / output -m 1 --append“

结果= $sqoop_cmd 2>&1 | grep -c "successfully"

错误: WARN tool.BaseSqoopTool:在命令行上设置密码是不安全的。考虑使用-P代替。

但我更新了--query到--table并删除'AND $ CONDITIONS'参数再试一次,sqoop命令结果是成功的。我认为关于'$'的问题,但我尝试'\ $ CONDITIONS',''$ CONDITIONS'“,这是不成功的。

请帮助我,非常感谢你!

2 个答案:

答案 0 :(得分:1)

这个错误的原因是因为

错误:WARN工具.BaseSqoopTool:在命令行上设置密码是不安全的。考虑使用-P代替。

您正在命令本身输入数据库密码,如 - password datagateway ,相反,如果您写的是 -P ,您将无法获得该警告,开始执行命令后将提示密码

答案 1 :(得分:0)

当你使用--query参数时,你必须使用$ CONDITION而你做到了。但是你忘了添加必须的--split-by参数: 来自sqoop user guide
"您的查询必须包含令牌$ CONDITIONS,每个Sqoop进程将用唯一的条件表达式替换。您还必须使用--split-by选择拆分列。"

希望它有所帮助。
的Pawel

相关问题