Comment spécifier KeyValueTextInputFormat Separator dans Hadoop-.20 API?
Dans la nouvelle API (apache.hadoop.mapreduce.KeyValueTextInputFormat) , comment spécifier le séparateur (délimiteur) autres que l'onglet(qui est par défaut) pour séparer la clé et la Valeur.
D'Entrée D'Échantillon :
one,first line
two,second line
De Sortie Requis :
Key : one
Value : first line
Key : two
Value : second line
Je suis en précisant KeyValueTextInputFormat :
Job job = new Job(conf, "Sample");
job.setInputFormatClass(KeyValueTextInputFormat.class);
KeyValueTextInputFormat.addInputPath(job, new Path("/home/input.txt"));
Cela fonctionne bien pour la tabulation comme séparateur.
source d'informationauteur pradeep
Vous devez vous connecter pour publier un commentaire.
Dans la nouvelle API, vous devez utiliser
mapreduce.input.keyvaluelinerecordreader.key.value.separator
propriété de configuration.Voici un exemple:
Veuillez régler les paramètres suivants dans le Pilote de Code.
Pour KeyValueTextInputFormat la ligne de saisie doit être une valeur de la clé de paire séparés par des "\t"
En changeant par défaut de l'élément de séparation, Vous serez en mesure de lire que vous le souhaitez.
Pour Les Nouvelles Api
Voici la solution
Carte
Sortie
C'est une séquence de la matière.
La première ligne
conf.set("key.value.separator.in.input.line", ",")
doit venir avant de créer une instance deJob
classe. Donc:Tout d'abord, la nouvelle API n'a pas fini de 0.20.* donc, si vous voulez utiliser les nouvelles API de 0,20.*, vous devez mettre en œuvre la fonction par vous-même.Par exemple, vous pouvez utiliser FileInputFormat à atteindre.
Ignorer la LongWritable clé, et de diviser le Texte en valeur à virgule vous-même.
Par défaut, le
KeyValueTextInputFormat
classe utilise une tabulation comme séparateur de la clé et de la valeur de l'entrée de texte fichier.Si vous voulez lire l'entrée d'un séparateur personnalisé, vous devez définir la configuration avec l'attribut que vous utilisez.
Pour la nouvelle Hadoop Api, c'est différent: