我想了解在这种情况下该怎么做。
例如,我有1TB的文本数据,并假设它是300GB
这个单词
"你好&#34 ;.
在每次映射操作之后,我将拥有<" Hello",1>的键值对的集合。
但正如我所说,这是一个巨大的集合,300GB,据我所知,减速器可以获得所有这些并且会粉碎。
这是什么解决方案?
假设组合器在这里没有帮助我(WordCount的例子只是为了简单),数据对于reducer来说仍然太大了。
答案 0 :(得分:4)
reducer确实获得了所有这些数据,但是这些数据实际上是写入磁盘的,只有在迭代Iteratable值时才会被带入内存。事实上,该迭代返回的对象将被重用于每个值:在将对象交给您之前,只需替换字段和其他状态。这意味着您必须显式复制值对象,以便同时在内存中包含所有值对象。