5

我可以在 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。奥齐吗?

4

3 回答 3

1

Oozie HDFS 动作的功能非常有限,在功能规范中有完整描述。要执行更复杂的操作,您可以使用Shell action。它允许运行任意 shell 命令作为工作流程的一部分,例如hadoop fs在您的情况下。

于 2013-05-21T08:16:33.443 回答
0

不-根据我的经验,它看起来不起作用。

FS006:移动,源路径 [hdfs://nodename:8020/projects/blah/201*.gz] 不存在

于 2013-08-13T13:06:13.237 回答
-1

在 workflow.xml 中使用:

    <action name="Movefiles">
    <fs>
    <move source='${SourcePath}' target='${DestinationPath}'/>
    </fs>
    <ok to="end"/>
    <error to="fail"/>
   </action>

在 job.properties 中写:

源路径=输出/*/

DestinationPath=存档

于 2015-10-02T19:17:05.837 回答