1

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

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

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

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

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

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

4

1 回答 1

0

添加以下属性以将文件或档案添加到您的 map-reduce 操作。有关详细信息,请参阅此文档。

<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>
于 2015-04-15T23:30:11.187 回答