我的行动
start_fair_usage
以状态正常结束,但test_copy
返回
Main class [org.apache.oozie.action.hadoop.DistcpMain], main() threw exception, null
在/user/comverse/data/${1}_B
我有很多不同的文件,其中一些我想复制到${NAME_NODE}/user/evkuzmin/output
. 为此,我尝试从中传递paths
包含一组copy_files.sh
路径到我需要的文件的路径。
<action name="start_fair_usage">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${JOB_TRACKER}</job-tracker>
<name-node>${NAME_NODE}</name-node>
<exec>${copy_file}</exec>
<argument>${today_without_dash}</argument>
<argument>${mta}</argument>
<!-- <file>${path}#${start_fair_usage}</file> -->
<file>${path}${copy_file}#${copy_file}</file>
<capture-output/>
</shell>
<ok to="test_copy"/>
<error to="KILL"/>
</action>
<action name="test_copy">
<distcp xmlns="uri:oozie:distcp-action:0.2">
<job-tracker>${JOB_TRACKER}</job-tracker>
<name-node>${NAME_NODE}</name-node>
<arg>${wf:actionData('start_fair_usage')['paths']}</arg>
<!-- <arg>${NAME_NODE}/user/evkuzmin/input/*</arg> -->
<arg>${NAME_NODE}/user/evkuzmin/output</arg>
</distcp>
<ok to="END"/>
<error to="KILL"/>
</action>
start_fair_usage
开始copy_file.sh
echo ${1}
echo ${2}
dirs=(
/user/comverse/data/${1}_B
)
args=()
for i in $(hadoop fs -ls "${dirs[@]}" | egrep ${2}.gz | awk -F " " '{print $8}')
do
args+=("$i")
echo "copy file - "${i}
done
paths=${args}
echo ${paths}