【问题标题】:shell executed sqoop command errorshell执行sqoop命令错误
【发布时间】:2015-01-29 03:05:03
【问题描述】:

我想用 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(),interval 1 day) AND $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'",它不成功。

请帮帮我,非常感谢!

【问题讨论】:

    标签: shell sqoop


    【解决方案1】:

    这个错误是因为

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

    您正在像这样--password datagateway这样的命令本身中输入数据库密码,而不是如果您像这样写-P,您将不会收到该警告并且密码将开始执行命令后提示

    【讨论】:

    • 关于 -P otpion 的信息不是错误。这是一个安全建议。它不会导致任何错误。
    • 我知道这不是错误,但有时它满足了我的需要,所以建议
    【解决方案2】:

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

    希望对您有所帮助。
    帕维尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2013-01-05
      • 2010-09-14
      • 2017-04-11
      • 1970-01-01
      相关资源
      最近更新 更多