我在mapreduce中为每个数据集建立支持向量机模型(为此我使用libsvm库)。甚至,我有每个模型的测试结果。测试结果文件包含以下详细信息(它给出了测试结果的预测)
+1 -1 +1 +1 .. .. +1
我有这样5个测试文件。现在我想在map reduce中使用多数投票来合并测试结果。在Map阶段,我想把行号作为键的值。如何在Map阶段为所有测试文件提供行号作为值。
46qrfjad1#
我不知道你是否需要mapreduce来完成这个任务,但是如果你真的需要在mapreduce中完成它,我只会使用map-only作业,甚至不使用输出文件。只使用两个计数器(我没有找到一个 decrCounter 方法和 incrCounter 不能取负值)。下面是一个简单的伪代码:
decrCounter
incrCounter
enum MyCounter = {POSITIVES, NEGATIVES}; map(LongWritable key, Text value, Reporter reporter) { if (value.toString().equals("+1")) { reporter.incrCounter(MyCounter.POSITIVES, 1); } else { reporter.incrCounter(MyCounter.NEGATIVES, 1); } }
那么,如果 POSITIVES > NEGATIVES ,+1胜!如果不需要mapreduce,只需计算所有文件的行数,例如使用 wc -l 命令,然后计算具有+1的行数,例如使用 grep -c .
POSITIVES > NEGATIVES
wc -l
grep -c
1条答案
按热度按时间46qrfjad1#
我不知道你是否需要mapreduce来完成这个任务,但是如果你真的需要在mapreduce中完成它,我只会使用map-only作业,甚至不使用输出文件。只使用两个计数器(我没有找到一个
decrCounter
方法和incrCounter
不能取负值)。下面是一个简单的伪代码:那么,如果
POSITIVES > NEGATIVES
,+1胜!如果不需要mapreduce,只需计算所有文件的行数,例如使用
wc -l
命令,然后计算具有+1的行数,例如使用grep -c
.