0
내 행동oozie의 distcp 액션과 다른에 HDFS 디렉토리에서 파일을 복사
start_fair_usage
는 상태 좋아요로 끝나는하지만 test_copy
반환 /user/comverse/data/${1}_B
에서
Main class [org.apache.oozie.action.hadoop.DistcpMain], main() threw exception, null
나는의 일부를 다른 파일을 많이 가지고 이 파일을 ${NAME_NODE}/user/evkuzmin/output
에 복사하고 싶습니다. 그 때문에 나는 필요한 파일에 대한 경로 배열을 보유하고있는 copy_files.sh
에서 paths
을 전달하려고합니다.
<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}
DistCp의 문제점은 무엇입니까? – franklinsijo
@frank 나는'copy_file.sh'에서'test_copy'로 전달하는'paths'가 비어 있다고 생각합니다. 나는 이유를 모른다. –
다른 질문에서 알 수 있듯이, 날짜를 기반으로 파일을 다른 디렉토리에 격리하려고합니다. 그것이 당신이 성취하고자하는 것과 동일하다면 왜 직접'경로 '를 전달하지 않겠습니까? – franklinsijo