具有一个线程安全的Mapper类



为了避免在Hadoop Mapper类的每个实例上分配内存,然后依赖GC来清理这些内存,我使用静态对象,我在map方法中访问读写。

我必须关心线程安全吗?

默认情况下,每个映射任务将在自己的JVM上运行。所以你不会从使用静态对象中得到任何好处。我建议不要做一些奇怪的事情,除非你真的遇到性能问题。

再加上Enno和Quetzalcoatl说过的话。当map任务在JVM中运行时,它创建Mapper类的单个对象,并为每个输入(即使用TextInputFormat时为文件的每一行)调用mapfn。但它按顺序调用fn,而不是并行调用。因此,应该没有您正在使用的对象的线程安全问题。

问候,Manish

相关内容

  • 没有找到相关文章

最新更新