Oozie HDFS动作可以使用文件模式还是glob?

时间:2013-05-20 13:45:29

标签: oozie

我可以在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?

3 个答案:

答案 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档案