如何在oozie作业中将文件添加到分布式缓存中

时间:2015-04-15 14:11:05

标签: hadoop mapreduce jobs oozie distributed-cache

我正在实施一个oozie工作流程,在第一项工作中,我使用sqoop从数据库中读取数据并将其写入hdfs。在第二个作业中,我需要读取大量数据并使用我刚刚在作业1中编写的文件来处理大数据。这就是我的想法或尝试:

  1. 假设作业将文件写入hdfs上的某个目录,将文件添加到作业2的驱动程序类中的分布式缓存中将无法正常工作,因为oozie工作流只知道作业的mapper和reducer类。 (如果我错了,请纠正我)

  2. 我还尝试写入工作流的lib目录,希望文件会自动添加到分布式缓存中,但我知道只有在作业运行时才能读取lib目录。

  3. 我还想过如果我可以将文件添加到作业2的setup()中的分布式缓存中,那么我可以在mapper / reducer中访问它们。我不知道如何在setup()中添加文件,是否可能?

  4. 如何从分布式缓存中读取后续作业中上一个作业的输出文件。我已经在使用作业二的输入目录来读取需要处理的数据,所以我不能使用它。

    我在Ubuntu 12.04虚拟机上使用Hadoop 1.2.1,Oozie 3.3.2。

1 个答案:

答案 0 :(得分:0)

添加以下属性,将文件或存档添加到map-reduce操作中。 Refer to this documentation for details.

<file>[FILE-PATH]</file>
            ...
<archive>[FILE-PATH]</archive>

您还可以在java命令行中输入,如下所示。

<main-class>org.apache.oozie.MyFirstMainClass</main-class>
            <java-opts>-Dblah</java-opts>
            <arg>argument1</arg>
            <arg>argument2</arg>