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

How do I add files to distributed cache in an oozie job

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

  1. 假设作业一将文件写入 hdfs 上的某个目录,将文件添加到作业二的驱动程序 class 中的分布式缓存将不起作用,因为 oozie 工作流只知道映射器和 reducer classes 的工作。 (这里说错了请指正)

  2. 我也尝试写入工作流的 lib 目录,希望文件随后会自动添加到分布式缓存中,但我知道 lib 目录应该只在作业 运行.

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

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

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

添加以下属性以将文件或存档添加到您的 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>