我正在实现一个 oozie 工作流程,在第一份工作中,我使用 sqoop 从数据库中读取数据并将其写入 hdfs。在第二份工作中,我需要读取大量数据,并使用我在第一份工作中编写的文件来处理大量数据。以下是我的想法或尝试:
假设作业一将文件写入 hdfs 上的某个目录,将文件添加到作业二的驱动程序类中的分布式缓存将不起作用,因为 oozie 工作流只知道作业的映射器和减速器类。(如果我在这里错了,请纠正我)
我还尝试写入工作流的 lib 目录,希望这些文件随后会自动添加到分布式缓存中,但我知道 lib 目录应该仅在作业运行时读取。
我还想如果我可以将文件添加到
setup()
作业 2 中的分布式缓存中,那么我可以在映射器/减速器中访问它们。我不知道如何在 中添加文件setup()
,这可能吗?
我怎么能从分布式缓存中读取后续作业中上一个作业的输出文件。我已经在使用作业二的输入目录来读取需要处理的数据,所以我不能使用它。
我在 Ubuntu 12.04 虚拟机上使用 Hadoop 1.2.1、Oozie 3.3.2。