gpt4 book ai didi

java - Hadoop:在 MapReduce [Java] 中实现嵌套 for 循环

转载 作者:可可西里 更新时间:2023-11-01 14:58:54 26 4
gpt4 key购买 nike

我正在尝试实现一个统计公式,该公式需要将一个数据点与所有其他可能的数据点进行比较。例如我的数据集是这样的:

10.22
15.77
16.55
9.88

我需要像这样浏览这个文件:

for (i=0;i< data.length();i++)
for (j=0;j< data.length();j++)
Sum +=(data[i] + data[j])

基本上,当我通过 map 函数获取每一行时,我需要在 reducer 中对文件的其余部分执行一些指令,就像在嵌套 for 循环中一样。现在我尝试使用分布式缓存,某种形式的 ChainMapper,但无济于事。任何关于我如何去做这件事的想法都将不胜感激。即使是开箱即用的方式也会有所帮助。

最佳答案

您需要覆盖 Reducer 类的 run 方法实现。

 public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKey()) {
//This corresponds to the ones corresponding to i of first iterator
Text currentKey = context.getCurrentKey();
Iterator<VALUEIN> currentValue = context.getValues();
if(context.nextKey()){
//You can get the Next Values the ones corresponding to j of you second iterator
}
}
cleanup(context);

或者,如果您没有 reducer,您也可以通过覆盖

在 Mapper 中执行相同的操作
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKeyValue()) {
/*context.nextKeyValue() if invoked again gives you the next key values which is same as the ones you are looking for in the second loop*/
}
cleanup(context);

如果这有帮助,请告诉我。

关于java - Hadoop:在 MapReduce [Java] 中实现嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com