Files
go-zero/example/mapreduce/flatmap/flatmap.go

32 lines
641 B
Go
Raw Normal View History

2020-07-26 17:09:05 +08:00
package main
import (
"fmt"
2020-08-08 16:40:10 +08:00
"github.com/tal-tech/go-zero/core/mr"
2020-07-26 17:09:05 +08:00
)
var (
persons = []string{"john", "mary", "alice", "bob"}
friends = map[string][]string{
"john": {"harry", "hermione", "ron"},
"mary": {"sam", "frodo"},
"alice": {},
"bob": {"jamie", "tyrion", "cersei"},
}
)
func main() {
var allFriends []string
2020-07-29 22:34:37 +08:00
for v := range mr.Map(func(source chan<- interface{}) {
2020-07-26 17:09:05 +08:00
for _, each := range persons {
source <- each
}
2020-07-29 22:34:37 +08:00
}, func(item interface{}, writer mr.Writer) {
2020-07-26 17:09:05 +08:00
writer.Write(friends[item.(string)])
2020-07-29 22:34:37 +08:00
}, mr.WithWorkers(100)) {
2020-07-26 17:09:05 +08:00
allFriends = append(allFriends, v.([]string)...)
}
fmt.Println(allFriends)
}