我有如下形式的2个文件减去两个数字与Hadoop中相同的密钥
文件1:
key1的值1
键2值2
...
文件2:
个KEY1 VALUE3
KEY2 VALUE4
...
我想以产生减少的形式
KEY1(值1-VALUE3)/ VALUE1
KEY2的输出( value2-value4)/ value2
我有地图编写密钥,值前面加了一个字符te灌装它 从文件1或文件2,但不知道未来该怎么写减少阶段
我的地图的方法是
public void map(LongWritable key,Text val,Context context) throws IOException, InterruptedException
{
Text outputKey = new Text();
Text outputValue = new Text();
outputKey.set(key.toString());
if ("A")
{
outputValue.set("A,"+val);
}
else
{
outputValue.set("B," + val);
}
context.write(outputKey, outputValue);
}
}
谢谢。这是我第一次尝试,似乎不起作用。每次调用reduce时,值都是单个对象,而不是我期望的两个对象(每个文件中的一个用于同一个键)。我添加了我的地图方法,可能它是不正确的。案例key1 = key2在这个特定的例子中不会发生。 – user2175783 2014-11-04 01:35:02
它甚至不会编译,标记在冥王星上;-)。我会更新问题本身,不想编辑答案。您稍后可能会将密钥类型更改为'InWritable',但请添加'keyVal'.length检查以消除AOBException。现在看看。 – blackSmith 2014-11-04 05:29:09
他们拒绝了我对这个问题的编辑。所以我把它张贴在这里。我假定文件名是FileA和FileB。 – blackSmith 2014-11-04 10:03:52