2015-08-05 10 views

risposta

-1

Questo github: https://github.com/vistarmedia/gossamr è un buon esempio per iniziare ad utilizzare un lavoro golang su Hadoop:

Jist:

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) 
    } 
} 

Dando il via lo script:

./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 
+0

Grazie Eric per il tuo contributo! Ma il tuo codice utilizza l'Hadoop Streaming API e ho affermato che non ero interessato a questo. –

Problemi correlati