2012-02-29 67 views
1

我目前有一个任务,我需要在Hadoop中链接几个工作。 我现在在洞里是我有2个工作。我的第一份工作有一个地图功能,一个组合器和一个减速器。那么我需要一个减少的阶段,所以我创建了一个简单的地图任务,将前一个减速器的输出传递给最终减速器的第二个任务。 我发现这有点“愚蠢”,因为必须有一种方法来简单地链接这个。此外,我认为I/O将会减少。Hadoop:在0.20.203链接工作

我使用0.20.203版本,我只找到使用JobConf的ChainMapper和ChainReducer的不推荐使用的例子。 我发现这些: http://hadoop.apache.org/mapreduce/docs/current/api/org/apache/hadoop/mapreduce/lib/chain/ChainMapper.html http://hadoop.apache.org/mapreduce/docs/current/api/org/apache/hadoop/mapreduce/lib/chain/ChainReducer.html ,这似乎与工作类,而不是与在203弃用JobConf工作,但没有包含在203

+0

你是说你发现它有点“愚蠢”,不得不编写你自己的传递输出的简单地图任务吗?你的问题是什么?你会从不同减速器的输出中获得相同的关键吗? – 2012-03-01 03:51:50

+0

我在说,我只是想连锁2个工作,而不必将第一份工作的输出传递给第二份工作。用2个工作做这件事非常简单,我知道,因为我已经做到了。但是由于hadoop有一个优化的连锁方式,减少了I/O,我只是想用这种方式。但我总是发现不赞成的例子。我有3本关于hadoop的书,它们都有不合适的例子。现在我已经找到了另一种方式来做到这一点,比有2个工作更有效率,我保留这个职位,因为我找不到任何其他关于链接的帖子(对于203版本)。感谢您的关注 – jojoba 2012-03-01 18:41:51

回答

0

你可以认为这些类的任何包使用oozie。创建工作流将会更容易。

+1

我已经看到这些oozie和级联帖子。由于有一个选项,我可以使用hadoop api来做到这一点,我不想使用其他任何东西。 Oozie会比我想象的更复杂的任务 – jojoba 2012-02-29 21:05:11