оболочка выполнила ошибку команды sqoop

Я хочу использовать команду 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 успешен. Я думаю вопрос о '$', но я пробую '\$УСЛОВИЯ', "'$УСЛОВИЯ'", это безуспешно.

пожалуйста, помогите мне, большое спасибо!


person Dingdada    schedule 01.12.2014    source источник


Ответы (2)


эта ошибка вызвана тем, что ошибка

: WARN tool.BaseSqoopTool: установка пароля в командной строке небезопасна. Вместо этого рассмотрите возможность использования -P.

вы вводите пароль своей базы данных в самой команде, например ---password datagateway, вместо этого, если вы написали так -P вы не получите это предупреждение, и пароль будет запрошен после того, как вы начнете выполнять команду

person Kishore    schedule 16.12.2014
comment
информация о -P otpion не является ошибкой. Это рекомендация по безопасности. Это не вызовет никакой ошибки. - person psmith; 06.05.2015
comment
Я знаю, что это не ошибка, но иногда это служило моей потребности, поэтому предложил - person Kishore; 06.05.2015

Когда вы используете параметр --query, вы должны использовать $CONDITION, и вы это сделали. Но вы забыли добавить обязательный параметр --split-by: From sqoop руководство пользователя:
"Ваш запрос должен включать токен $CONDITIONS, который каждый процесс Sqoop заменит уникальным выражением условия. Вы также должны выбрать столбец разделения с --split-by."< /эм>

Надеюсь, это немного поможет.
Павел

person psmith    schedule 06.05.2015