0

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

我必须关心线程安全吗?

4

2 回答 2

3

默认情况下,每个 map 任务都将在自己的 JVM 上运行。因此,您不会从使用静态对象中获得任何好处。我建议不要做一些奇怪的事情,除非你真的面临性能问题。

于 2013-03-20T15:17:37.183 回答
1

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

问候, 马尼什

于 2013-06-11T21:48:05.013 回答