2012-08-29 52 views

回答

2

可以使用多輸入選項來指定多個輸入路徑:

hadoop jar hadoop-streaming.jar -input foo.txt -input bar.txt ... 
+1

謝謝。但是如果我想爲不同的輸入路徑使用不同的映射器呢?我實際上得到了不同的數據源,我想從中解析出相同格式的數據,以便Reducer可以處理。 – Ken

+1

我不像Streaming那麼熟悉正常的HMR,所以我不確定是否有更好的方法來做到這一點,但是您可以通過帶有Identity Reducers的Mappers來運行您的輸入,然後將這些輸出工作並將其用作具有身份映射器和所需的Reducer的另一項工作的輸入。 – HypnoticSheep

+0

因此,如果我想使用多輸出多輸入,我應該重寫hadoop-streaming.jar?或者只是將輸入和輸出指定爲shell參數? – whyisyoung

0

我想這可以幫助你:https://github.com/hyonaldo/hadoop-multiple-streaming

在這裏你可以看到「這些不同的輸入路徑不同映射器」以及:

hadoop jar hadoop-multiple-streaming.jar \ 
    -input myInputDirs \ 
    -multiple "outputDir1|mypackage.Mapper1|mypackage.Reducer1" \ 
    -multiple "outputDir2|mapper2.sh|reducer2.sh" \ 
    -multiple "outputDir3|mapper3.py|reducer3.py" \ 
    -multiple "outputDir4|/bin/cat|/bin/wc" \ 
    -libjars "libDir/mypackage.jar" \ 
    -file  "libDir/mapper2.sh" \ 
    -file  "libDir/mapper3.py" \ 
    -file  "libDir/reducer2.sh" \ 
    -file  "libDir/reducer3.py" 
相關問題