Я хочу использовать команду shell execute sqoop(1.4.5).
shell: sqoop_cmd="sqoop import --connect jdbc:mysql://xx.x.xxx.xxx:3306/test --username test --password datagateway --query 'выбрать t.name из table_name t где date(hrc .gmt_modified) = date_sub(curdate(), интервал 1 день) И $УСЛОВИЯ' --target-dir /output -m 1 --append"
результат=$sqoop_cmd 2>&1 | grep -c "successfully"
ошибка: WARN tool.BaseSqoopTool: установка пароля в командной строке небезопасна. Рассмотрите возможность использования -P вместо этого.
Но я обновил --query до --table и удалил параметр 'AND $CONDITIONS', повторите попытку. Результат команды sqoop успешен. Я думаю вопрос о '$', но я пробую '\$УСЛОВИЯ', "'$УСЛОВИЯ'", это безуспешно.
пожалуйста, помогите мне, большое спасибо!
Ответ 1 · рейтинг 1 · Kishore
эта ошибка вызвана тем, что ошибка
: WARN tool.BaseSqoopTool: установка пароля в командной строке небезопасна. Вместо этого рассмотрите возможность использования -P.
вы вводите пароль своей базы данных в самой команде, например ---password datagateway, вместо этого, если вы написали так -P strong> вы не получите это предупреждение, и пароль будет запрошен после того, как вы начнете выполнять команду
Ответ 2 · psmith
Когда вы используете параметр --query, вы должны использовать $CONDITION, и вы это сделали. Но вы забыли добавить обязательный параметр --split-by: From sqoop руководство пользователя:
"Ваш запрос должен включать токен $CONDITIONS, который каждый процесс Sqoop заменит уникальным выражением условия. Вы также должны выбрать столбец разделения с --split-by."
Надеюсь, это немного поможет.
Павел