我想使用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'“,这是不成功的。
请帮助我,非常感谢你!
答案 0 :(得分:1)
这个错误的原因是因为
错误:WARN工具.BaseSqoopTool:在命令行上设置密码是不安全的。考虑使用-P代替。
您正在命令本身输入数据库密码,如 - password datagateway ,相反,如果您写的是 -P ,您将无法获得该警告,开始执行命令后将提示密码
答案 1 :(得分:0)
当你使用--query参数时,你必须使用$ CONDITION而你做到了。但是你忘了添加必须的--split-by参数:
来自sqoop user guide:
"您的查询必须包含令牌$ CONDITIONS,每个Sqoop进程将用唯一的条件表达式替换。您还必须使用--split-by选择拆分列。"
希望它有所帮助。
的Pawel