key2值2
...
文件2:
我让映射写键,值用一个字符预先说明它来自file1或file2,但不确定如何编写reduce阶段
我的map方法是
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);
}
}
它应该足够简单,因为您已经标记了它,尽管开始时有点混乱。我假设发出的值类似于A23
(file1)&B139
(file2)。片段:
public void reduce(Text key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
int diff = 0;
int denominator = 1;
for (Text val : values) {
if (val.toString().startsWith("A")) {
denominator = Integer.parseInt(val.toString().substring(1));
diff += denominator;
} else if (val.toString().startsWith("B")) {
diff -= Integer.parseInt(val.toString().substring(1));
} else {
// This block shouldn't be reached unless malformed values are emitted
// Throw an exception or log it
}
}
diff /= denominator;
context.write(key, new IntWritable(diff));
}
希望这能有所帮助。但我认为,当key1
和key2
相等时,您的方法将严重失败。
更新映射
应如下所示,以便使用上述简化程序:
public void map(LongWritable key, Text val, Context context)
throws IOException, InterruptedException {
String fileName = ((FileSplit) context.getInputSplit()).getPath().getName();
String[] keyVal = val.toString().split("\\s+");
Text outputKey = new Text(keyVal[0]);
Text outputValue = new Text();
outputKey.set(key.toString());
if ("fileA".equals(fileName)) {
outputValue.set("A" + keyVal[1]);
} else {
outputValue.set("B" + keyVal[1]);
}
context.write(outputKey, outputValue);
}
问题内容: 在Python中,如何减去两个非唯一的无序列表?假设我们有和我想这样做,并有成为或顺序无关紧要给我。如果a在b中不包含所有元素,则应该抛出异常。 请注意,这与套装不同! 我对找到a和b中的元素集的差异不感兴趣,而对a和b中元素的实际集合之间的差异感兴趣。 我可以使用for循环来执行此操作,在a中查找b的第一个元素,然后从b和a中删除该元素,依此类推。但这对我没有吸引力,这会非常低效(按
最近我遇到了一个编程难题,我一生都找不到一个满意的答案:计算字符串给出的两个任意大整数之和,其中第二个整数可能是负数。这是在Java中完成的,没有使用任何BigInteger、BigNumber等类。 我最初使用伪代码的方法如下: 如果第二个字符串的第一个字符是'-',则设置减法标志。 将每个字符串转换为一个整数数组,每个数字一个。 用零扩展最短数组和左键,以便两个数组大小相同。 循环遍历数组的每
我正在用MapReduce框架用Java制作一个Hadoop应用程序。 对于输入和输出,我只使用文本键和值。在减少到最终输出之前,我使用一个合并器来做额外的计算。 但我有一个问题,钥匙不去同一个减速器。我在组合器中创建和添加了这样的键/值对: 基本上,我创建的工作如下: 减速机打印的标准输出如下: 这是没有意义的,因为键是相同的,因此它应该是2个还原器,其中3个值是相同的 希望你能帮我弄清这件事:
问题内容: 我需要能够对两个带注释的列进行汇总 所以我想做这样的事情: 接着: 有谁知道如何完成上述工作? 问题答案: 其实, 从Django 1.8开始 就可以正常工作了。 此外,您还可以按表达式排序,这意味着您可以使用: 甚至只是:
问题内容: 我的df如下所示: 我想从每个国家的Val1中减去Val10,所以输出如下: 到目前为止,我已经: runDeltas导致此错误: 解决此问题的正确方法是什么? 问题答案: 给定以下数据框: 它归结为一个简单的广播操作):
问题内容: 我正在从一个字符串中解析两个日期,如下所示: 我需要做的是找出这两个日期之间的区别,例如: = 8天2小时36分钟21秒 ^这是我需要的两个日期/时间 我相信我需要解析格式并将其转换为另一种格式,然后减去两者之间的差并进行数学运算以得出之间的天/小时/分钟/秒 问题答案: 与其他回答者试图暗示的相反,在标准Java SE中,计算两个日期之间的差异并不是那么简单。 您的第一步确实是将这些