Essayez de formuler un travail Hadoop différent de l'exemple de nombre de mots normal. Mes données d'entrée est de la forme:Formulation de travail Hadoop, en passant ArrayList <String> à Mapper()
makePush,1964
makePush,459
makePush,357
opAdd,2151
opAdd,257
opStop,135
J'aimerais passer à ces Mapper()
, et par la suite les fonctions Reducer()
, mais je ne parviens pas à la spécification, à savoir
Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
Donc, par exemple, opAdd
serait un KEYIN
, et 257
serait un VALUEIN
. Par la suite la somme de tous les opAdd
serait un KEYOUT
et la somme des nombres associés serait VALUEOUT
, cela a du sens n'est-ce pas?
Cependant, comment implémenter cela par programme? Il me semble que ce n'est pas si différent de l'exemple de Word Count en théorie.
Aha- Je pense que je vois ce que vous dire- depuis différents nœuds lire le fichier à différents endroits est-ce? –
Correct. Le LongWritable est sérialisé entre toutes les tâches de la carte afin qu'ils sachent où ils commencent à lire les lignes de fichier. –
sais comment je peux 'System.out.println (" * quelque chose à propos de l'état du processus intermédiaire pour le débogage * ")' dans Hadoop - dois-je utiliser ce 'log4j'? –