为什么将Mapper和Reducer类声明为静态?

为什么将Mapper和Reducer类声明为静态?,第1张

为什么将Mapper和Reducer类声明为静态?

当将mapper和reducer类声明为另一个类的内部类时,必须将它们声明为静态的,以便它们不依赖于父类。

Hadoop使用反射为每个映射创建该类的实例或减少运行的任务。创建的新实例需要一个零参数构造函数(否则它将如何知道要传递的内容)。

通过声明内部映射器或reduce类而不使用static关键字,java编译器实际上创建了一个构造函数,该构造函数希望在构造时传递父类的实例。

通过对生成的类文件运行javap命令,您应该能够看到此信息

另外,当在父类声明中使用static关键字时无效(这就是为什么您永远不会在顶级看到它,而仅在子类中看到它的原因)



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5140813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存