可能這會幫助你。我發現這個來自Apache的......組織
定製方式來分割線成鍵/值對 正如前面提到的,當的Map/Reduce框架讀取來自映射器的標準輸出線,它將該行成鍵/值對。默認情況下,直到第一個製表符的行的前綴是鍵,而行的其餘部分(不包括製表符)是值。
但是,您可以自定義此默認值。您可以指定除製表符(默認值)以外的字段分隔符,並且可以指定第n個(n> = 1)字符而不是行(默認值)中的第一個字符作爲鍵和值之間的分隔符。例如:
$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \
-input myInputDirs \
-output myOutputDir \
-mapper org.apache.hadoop.mapred.lib.IdentityMapper \
-reducer org.apache.hadoop.mapred.lib.IdentityReducer \
-D stream.map.output.field.separator=. \
-D stream.num.map.output.key.fields=4
在上例中,-D stream.map.output.field.separator=.
指定了「。」。作爲地圖輸出的字段分隔符,以及直到第四個「。」的前綴。在一行中將是關鍵,並且該行的其餘部分(不包括第四個「。」)將是該值。如果一行少於四個「。」,那麼整行將是關鍵字,並且該值將是一個空的Text對象(如由新Text(「」)創建的那個)。
同樣,您可以使用-D stream.reduce.output.field.separator=SEP
和-D stream.num.reduce.output.fields=NUM
指定reduce輸出行中的第n個字段分隔符作爲鍵和值之間的分隔符。
同樣,您可以指定stream.map.input.field.separator
和stream.reduce.input.field.separator
作爲map/reduce輸入的輸入分隔符。默認情況下,分隔符是製表符。
來源
2012-01-09 08:19:26
ssx
它通過sys.stdin進入 –