我想在go中编写hadoop map/reduce作业(而不是流式api!)。我试图掌握hortonworks/gohadoop和colinmarc/hdfs,但我仍然看不到如何真正地编写作业。我已经在github上搜索了导入这些模块的代码,但是显然没有相关的内容。有吗 WordCount.go 在什么地方?
WordCount.go
u91tlkcl1#
此github:https://github.com/vistarmedia/gossamr 这是开始在hadoop上使用golang作业的一个很好的例子:日本标准:
package main import ( "log" "strings" "github.com/vistarmedia/gossamr" ) type WordCount struct{} func (wc *WordCount) Map(p int64, line string, c gossamr.Collector) error { for _, word := range strings.Fields(line) { c.Collect(strings.ToLower(word), int64(1)) } return nil } func (wc *WordCount) Reduce(word string, counts chan int64, c gossamr.Collector) error { var sum int64 for v := range counts { sum += v } c.Collect(sum, word) return nil } func main() { wordcount := gossamr.NewTask(&WordCount{}) err := gossamr.Run(wordcount) if err != nil { log.Fatal(err) } }
开场白:
./bin/hadoop jar ./contrib/streaming/hadoop-streaming-1.2.1.jar \ -input /mytext.txt \ -output /output.15 \ -mapper "gossamr -task 0 -phase map" \ -reducer "gossamr -task 0 -phase reduce" \ -io typedbytes \ -file ./wordcount -numReduceTasks 6
k5ifujac2#
下面是用golang编写的map/reduce的一个简单实现(可在github上获得):https://github.com/dbravender/go_mapreduce
2条答案
按热度按时间u91tlkcl1#
此github:https://github.com/vistarmedia/gossamr 这是开始在hadoop上使用golang作业的一个很好的例子:
日本标准:
开场白:
k5ifujac2#
下面是用golang编写的map/reduce的一个简单实现(可在github上获得):
https://github.com/dbravender/go_mapreduce