2010-12-08 70 views
3

我需要为Hadoop MapReduce应用程序实现自定义(服务)输入源。我google'd和SO'd,发现一种方式继续是实现一个自定义InputFormat。那是对的吗?Hadoop MapReduce InputFormat已弃用?

显然根据http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapred/InputFormat.html已弃用InputFormat的方法getRecordReader()和getSplits()。什么是替代品?

Hadoop的字计数例如仍然使用相同的...

+0

你的问题实际上是在不同版本之间。 `0.20.2`(最新的稳定版本)的大部分问题是它明确弃用功能而没有版本内替换。 `MultipleOutputs`和`org.apache.hadoop.mapred`几乎全部都是这种情况。这似乎表明了我一直在关注的API的重大重组。 (回答即将出现,一旦我编译了足够的源代码信息。) – MrGomez 2010-12-08 05:01:07

回答

2

the documentation:

已过时接口

...

org.apache.hadoop.mapred.InputFormat

使用InputFormat inste广告。

...

由于与0.20.2怪异的行为贬低,甚至离奇的建议自嘲的接口后,用一个实现,我挖得更深一些。此界面仍存在于0.21.0中,并且已移除了弃用标记。在撰写本文时,我无法在主干中找到类似的界面。

+0

谢谢,我实现了一个自定义的InputFormat,很高兴知道0.21.0“undeprecates”它。 :D – Sri 2010-12-08 05:38:58

+0

@Srirangan很高兴帮助! – MrGomez 2010-12-08 05:41:13

5

尽管Hadoop仍然在内部使用来自mapred软件包的东西,但从用户的角度来看,它们几乎都应该被视为弃用。 Hadoop在文档方面极其缺乏,它们的例子都倾向于过时。幸运的是,当你真的陷入困境时,总会有一些堆栈溢出

4

发生了什么事情,在0.20他们弃用mapred类并引入了一个新的API。然而,新的API缺少核心功能,因此旧版API在最新版本中“不赞成”。建议使用旧的API,因为它最有可能是在这里停留的。