Peut être cela peut vous aider. J'ai trouvé de apache ... org
Personnalisation de la façon de lignes divisé en paires clé/valeur Comme indiqué précédemment, lorsque le cadre Map/Reduce lit une ligne du stdout du cartographe, il divise la ligne dans une paire clé/valeur. Par défaut, le préfixe de la ligne jusqu'au premier caractère de tabulation est la clé et le reste de la ligne (à l'exception du caractère de tabulation) est la valeur.
Toutefois, vous pouvez personnaliser cette valeur par défaut. Vous pouvez spécifier un séparateur de champ autre que le caractère de tabulation (valeur par défaut), et vous pouvez spécifier le caractère nth (n> = 1) plutôt que le premier caractère d'une ligne (par défaut) comme séparateur entre la clé et la valeur. Par exemple:
$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
Dans l'exemple ci-dessus, -D stream.map.output.field.separator=.
précise "" comme le séparateur de champ pour les sorties de la carte, et le préfixe jusqu'à la quatrième "." dans une ligne sera la clé et le reste de la ligne (à l'exclusion du quatrième ".") sera la valeur. Si une ligne a moins de quatre "." S, alors toute la ligne sera la clé et la valeur sera un objet Text vide (comme celui créé par new Text ("")).
De même, vous pouvez utiliser -D stream.reduce.output.field.separator=SEP
et -D stream.num.reduce.output.fields=NUM
pour spécifier le nième séparateur de zone dans une ligne des sorties réduites en tant que séparateur entre la clé et la valeur.
De même, vous pouvez spécifier stream.map.input.field.separator
et stream.reduce.input.field.separator
comme séparateur d'entrée pour les entrées de mappage/réduction. Par défaut, le séparateur est le caractère de tabulation.
Il est livré via sys.stdin –