0
私の行動oozieのdistcpアクションで別のHDFSディレクトリからファイルをコピーする
start_fair_usage
は、私は、のいくつかを異なるファイルがたくさんある状況オーケーで終わるが、/user/comverse/data/${1}_B
でtest_copy
戻り
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'は空であると思います。どうしてか分かりません。 –
私はあなたの他の質問から、異なるディレクトリに日付に基づいてファイルを分離したいと思います!それが達成しようとしているのと同じ場合は、 'path'を直接渡すのはなぜですか? – franklinsijo