我正在尝试设置Oozie map-reduce工作流操作来处理分布在多个目录中的输入文件。具体地说,我的意见是在以下目录中传播
.myClass {
color: #bbb;
}
通常,没有简单的glob模式来捕获我在运行时期望的文件列表。
我的workflow.xml中的输入规范是:
/data/d_20150629-2200
/data/d_20150630-2210
/data/d_20150530-2220
/data/d_20150531-2230
/data/d_20150701-2240
/data/d_20150702-2250
我的workflow.properties中的参数值是:
<property>
<name>mapred.input.dir</name>
<value>${inputFile}</value>
</property>
有了这个,我的Oozie工作自然地处理inputFile=/user/streaming/data/d_*
下以data
开头的所有目录。有没有办法修改workflow.xml或workflow.properties告诉Oozie只处理列出的六个目录下的文件?
在Pig中,可以指定以逗号分隔的输入路径列表。我还遇到了这两个涉及问题的帖子(post1,post2)。但在我的情况下,我既不想在不同的输入路径上应用不同的映射器,也没有不同的输入格式。我只想为同一个映射器指定多个输入目录。
Hadoop版本:Hadoop 2.3.0-cdh5.1.5 Oozie客户端构建版本:4.0.0-cdh5.1.5
感谢您的帮助。
答案 0 :(得分:2)
mapred.input.dir
文档声明它是
以逗号分隔的输入目录列表
所以你可以在workflow.properties
中定义一个属性inputFilePath=/user/streaming/data
并在workflow.xml中使用它
<property>
<name>mapred.input.dir</name>
<value>${inputFilePath}/d_20150629-2200,${inputFilePath}/d_20150630-2210, ...</value>
</property>
但是如果你只想运行一次,那么将所需内容复制/移动到一个单独的目录并将其传递给输入会更容易。