我的目录结构如下:;
|-MyDir
| |--subDir1
| | |---file1.zip
| | |---file2.zip.tmp
| |--subDir2
| | |---file1.zip
| | |---file2.zip.tmp
我必须将整个子目录连同文件一起移动到另一个位置,前提是它不包含任何以.zip.tmp扩展名结尾的文件。换句话说,我必须在移动时忽略包含.zip.tmp文件的子目录。我的工作流程如下:
<workflow-app xmlns='uri:oozie:workflow:0.2' name='EndToEndWorkflow-wf'>
<start to='Movefiles' />
<action name="Movefiles">
<fs>
<move source='${SourcePath}' target='${DestinationPath}'/>
</fs>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Java failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
job.properties具有以下特性:
nameNode=hdfs://XXX:8020
jobTracker=XXX:8032
queueName=default
oozie.use.system.libpath=true
oozie.coord.application.path=${nameNode}/user/hdfs/MyOozieTest
SourcePath=${nameNode}/user/hdfs/Automation/*/
DestinationPath=${nameNode}/user/hdfs/MovedFlumeFiles/
但这不会忽略.zip.tmp文件。有人对此有什么有用的想法吗?
1条答案
按热度按时间xdnvmnnf1#
我解决了上述问题。我已经编写了使用hadoopapi的java代码。使用filesystem.globstatus(path,pathfilter)过滤文件,使用filesysem.rename(scr,dest)函数移动文件。