Я выполняю sqoop
job from Oozie
workflow. Я могу создать целевой каталог со статическими именами в команде sqoop
следующим образом.
Oozie: Sqoop dynamic target directory
<action name="table1" cred="">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>job --exec EMPLOYEE --meta-connect jdbc:hsqldb:hsql://<host>:<port>/sqoop -- --target-dir /user/test/Employee/20150126</command>
</sqoop>
<ok to="end" />
<error to="kill" />
</action>
Мне нужно создать динамический целевой каталог с датой. Я пробовал со следующим, но не работал.
<action name="table1" cred="">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>job --exec EMPLOYEE --meta-connect jdbc:hsqldb:hsql://<host>:<port>/sqoop -- --target-dir /user/test/Employee/$(date +%Y%m%d)</command>
</sqoop>
<ok to="end" />
<error to="kill" />
</action>
во время работы отображается нижеследующая ошибка.
3622 [main] INFO org.apache.sqoop.Sqoop - Running Sqoop version: 1.4.5-cdh5.2.0
3957 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Error parsing arguments for import:
3957 [main] ERROR org.apache.sqoop.tool.BaseSqoopTool - Unrecognized argument: +%Y%m%d)
Intercepting System.exit(1)
Я думаю, вам нужно будет создать свойство job, например '$ {today}, а затем включить его в действие scoop. Команда sqoop action не является вызовом bash, поэтому '$ (date +% Y% m% d)' не будет работать – owen79