mit6.824 lab1 part2

part2主要是实现main/wc.go中的mapF()reduceF()函数,具体来说mapF()是对文件内容进行分词,每个词频默认为1;然后在reduceF()中统计key对应的value个数

1
2
3
4
5
6
7
8
9
10
11
12
func (filename string, contents string) []mapreduce.KeyValue {

//strings.FieldsFunc()按照传入的func来切割字符串,传入的func遍历传入字符串的每个rune,若返回true则略过,返回false则保留,连续保留的rune合并为一个字符串
words := strings.FieldsFunc(contents, func(r rune) bool {
return !unicode.IsLetter(r)
})
var kvs []mapreduce.KeyValue
for _, word := range words {
kvs = append(kvs, mapreduce.KeyValue{Key: word, Value: "1"})
}
return kvs
}
1
2
3
4
func reduceF(key string, values []string) string {

return strconv.Itoa(len(values))
}