2012-08-29 51 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" 
相关问题