我可以在Oozie移动操作中使用通配符(例如*)或文件模式(例如{})吗?
我正在尝试将我的工作结果移到存档目录中。
目录结构的状态:
output
- 201304
- 201305
archive
- 201303
我的行动:
<fs name="archive-files">
<move source="hdfs://namenode/output/{201304,201305}"
target="hdfs://namenode/archive" />
<ok to="next"/>
<error to="fail"/>
</fs>
结果错误:
FS006: move, source path [hdfs://namenode/output/{201304,201305}] does not exist
有没有一种简单的方法可以在glob或bash语法中移动多个文件?希望做一些类似于这个hadoop命令的事情:
hadoop fs -mv hdfs://namenode/output/{201304,201305} hdfs://namenode/archive
我错过了什么吗? hadoop fs命令接受glob。 Oozie?
答案 0 :(得分:1)
Oozie HDFS操作功能非常有限,在functional specification中有详细描述。要做一些更复杂的事情,你可以使用Shell action。它允许在工作流程中运行任意shell命令,例如在你的情况下hadoop fs
。
答案 1 :(得分:0)
不 - 根据我的经验,它看起来不像是有效的。
FS006:移动,源路径[hdfs:// nodename:8020 / projects / blah / 201 * .gz]不存在
答案 2 :(得分:-1)
在workflow.xml中使用:
<action name="Movefiles">
<fs>
<move source='${SourcePath}' target='${DestinationPath}'/>
</fs>
<ok to="end"/>
<error to="fail"/>
</action>
并在job.properties中写道:
SOURCEPATH =输出/ * /
=的DestinationPath档案