Java 图形数据上的MapReduce-reducer返回不正确的附加数据
我正在尝试在Stanford snap的web图形数据集上运行Hadoop Map Reduce。图形表示为一个文本文件,包含开始和结束节点,如图所示(前几行)- 其目的是为每个节点建立一个邻接列表,并计算每个邻接的长度。名单 映射器发射成对的开始和结束节点-Java 图形数据上的MapReduce-reducer返回不正确的附加数据,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我正在尝试在Stanford snap的web图形数据集上运行Hadoop Map Reduce。图形表示为一个文本文件,包含开始和结束节点,如图所示(前几行)- 其目的是为每个节点建立一个邻接列表,并计算每个邻接的长度。名单 映射器发射成对的开始和结束节点- public static class AdjMapper extends Mapper<Object, Text, Text, Text>{ private Text outVal = new Te
public static class AdjMapper
extends Mapper<Object, Text, Text, Text>{
private Text outVal = new Text();
private Text outKey = new Text();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException
{
String inline = value.toString();
if (!inline.startsWith("#")) {
String[] inVals = inline.split("\t");
outKey.set(inVals[0]);
outVal.set(inVals[1]);
context.write(outKey, outVal);
}
}
}
这一行应该在结果中每一行的末尾追加每个邻接列表的长度-
adjlst=adjlst+“#”+cntr代码>
但是,在结果中,即使生成了正确的长度并将其添加到列表中,也会在每个节点的最末端的邻接列表中添加一个额外的#1
,如下所示-
0 11342,824020,867923,891835#4#1
1 203402,53051,893884,862566,748615,635575,569212,552600,276233,223236#10#1
10 556796,826668,49988,85506,129774,134964,181848,194746,310676,332640,393685#11#1
1000 890302,902208#2#1
我添加了一些print语句,并且能够使用纱线日志获取日志,下面是日志中的一个片段-
=====
Counter: 4
Adj List: 579169,724176,185821,463266#4
=====
=====
Counter: 3
Adj List: 384668,278120,666332#3
=====
因此,列表正在正确构建,并且长度也添加到了末尾。但是为什么/如何在末尾添加#1
0 11342,824020,867923,891835#4#1
1 203402,53051,893884,862566,748615,635575,569212,552600,276233,223236#10#1
10 556796,826668,49988,85506,129774,134964,181848,194746,310676,332640,393685#11#1
1000 890302,902208#2#1
=====
Counter: 4
Adj List: 579169,724176,185821,463266#4
=====
=====
Counter: 3
Adj List: 384668,278120,666332#3
=====