hadoop - 如何在 Golang 中编写 Map/Reduce 任务?

标签 hadoop go

我想在 Go(而不是 Streaming API!)中编写 Hadoop Map/Reduce 作业。

我试图掌握 hortonworks/gohadoopcolinmarc/hdfs但我仍然不知道如何真正写作业。我已经搜索了导入这些模块的 github 代码,但显然没有任何相关内容。

在某处是否有任何 WordCount.go

最佳答案

这个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

关于hadoop - 如何在 Golang 中编写 Map/Reduce 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832266/

相关文章:

hadoop - 无法使用Sqoop导入配置单元

Hadoop 计数器文档?

testing - 使用包调用 go test 时的输出差异

http - ioutil.ReadAll 的替代方案?

hadoop - Hadoop dfs.replicate 如何工作?

hadoop - 由于输入字符串 “30s”的java.lang.NumberFormatException,Apache Tez作业失败

java - 运行 map 缩减程序时出现错误 java.lang.RuntimeException : java. lang.ClassNotFoundException : wordcount_classes. WordCount$Map

mongodb - 使用 mgo 将 Collection 转换为 Capped

go test 仅在测试完成后打印输出

database - "no such table"内存中 sqlite 错误