在O'Reilly Hadoop指南中,mapper和reducer类的实现首先在单独的文件中引入。页面稍后,它将它们显示为内部类。
通过我编写和编写的工作,我发现将mapper和reducers捆绑在一起的实现更难以使用。所以我的惯例是编写单独的顶级类。这是对的吗?
答案 0 :(得分:2)
从java程序的角度来看,内部类和外部类之间肯定存在一些差异,其中一个主要优点是
嵌套类表示一种特殊类型的关系,它可以访问外部类的所有成员(数据成员和方法),包括私有。
在MapReduce程序中,因为mapper和reducer使用Inner类相互独立运行,当然不会提供任何编程优势。
本书中使用Inner类的主要原因是为了便于阅读和使用。任何试图从书中复制代码的新手都可以复制粘贴(如果是电子书)整个代码到一个单独的Java文件并执行程序。
仅供参考: 请参阅此link以了解何时使用内部类。
答案 1 :(得分:0)
您可以将它们编写为内部类或单独的类。第二个是更好的练习。