繁体   English   中英

如何在Java实现Hadoop MapReduce中创建全局变量?

[英]How to Create Global Variable in Java Implementation of Hadoop MapReduce?

现在我想创建一个全局双变量(成员),可以由MapReduce作业中的每个映射器/缩减器访问和更改。 起初我试图在我的主java文件中声明一个静态double成员,但它似乎有问题,因为每个mapper / reducer在一个单独的JVM上运行,并且可以正确地更改和访问该成员。

我知道对于int变量有counter制机制。 但是如果我想创建一个全局双变量,我该怎么做呢?

我的最终目标是总结所有映射器/缩减器中的双重格式。 如果我不能或不应该创建全局变量,还有其他方法可以实现这个目标吗?

这些双打来自哪里? 如果它们在输入数据中,则可以将其作为普通MR作业。 让您的映射器始终输出相同的键,以及要求的值。 使用组合器在每个映射器中进行本地求和。 然后只使用一个减速器,让它简单地发出总和。

“全局”状态正是Map-Reduce范式试图避免的。 您必须尝试将所有内容都考虑为在单独的映射器中执行不同的工作部分,然后在reducers中进行组合/聚合。

实际上你可以像整数一样对待。 您可以将任何双倍乘以100000并将其存储在计数器中。 在减速机中,如果需要,只需除以100000。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM