gpt4 book ai didi

hadoop - 如何在hadoop mapreduce中消除重复的文件名?

转载 作者:行者123 更新时间:2023-12-02 20:13:49 24 4
gpt4 key购买 nike

我想在hadoop mapreduce反向索引程序的输出中消除重复的文件名。例如,输出类似于-Things:doc1,doc1,doc1,doc2,但我希望它像
东西:doc1,doc2

最佳答案

好吧,您想删除已映射的重复项,即,您想将中间值列表减少减少为没有重复项的输出列表。最好的选择是将Iterator<Text>方法中的reduce()转换为Java Set并对其进行迭代以更改:

while (values.hasNext()) {
if (!first)
toReturn.append(", ") ;
first = false;
toReturn.append(values.next().toString());
}

像这样:
Set<Text> valueSet = new HashSet<Text>();
while (values.hasNext()) {
valueSet.add(values.next());
}

for(Text value : valueSet) {
if(!first) {
toReturn.append(", ");
}
first = false;
toReturn.append(value.toString());
}

不幸的是,我不知道将Iterator转换为Set的更好(更简洁)的方法。

与Orange解决方案相比,这应该具有更小的时间复杂度,但是却需要更高的内存消耗。

@Edit:简短一点:
Set<Text> valueSet = new HashSet<Text>();
while (values.hasNext()) {
Text next = values.next();
if(!valueSet.contains(next)) {
if(!first) {
toReturn.append(", ");
}
first = false;
toReturn.append(value.toString());
valueSet.add(next);
}
}

包含应该是(就像加法一样)恒定时间,所以现在应该是O(n)。

关于hadoop - 如何在hadoop mapreduce中消除重复的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181764/

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