2013-04-07 1 views
1

J'essaie de lire un fichier Excel contenant des données pour l'agrégation dans hadoop.Le programme de réduction de la carte semble fonctionner correctement, mais le produit de sortie est dans un format non lisible. Dois-je besoin d'utiliser un lecteur de inputFormat spécial pour le fichier Excel dans Hadoop la carte Réduire? configuration .Mon est comme ci-dessousLecture d'un fichier Excel dans la carte hadoop réduire

Configuration conf=getConf(); 
Job job=new Job(conf,"LatestWordCount"); 
job.setJarByClass(FlightDetailsCount.class); 
Path input=new Path(args[0]); 
Path output=new Path(args[1]); 
FileInputFormat.setInputPaths(job, input); 
FileOutputFormat.setOutputPath(job, output); 
job.setMapperClass(MapClass.class); 
job.setReducerClass(ReduceClass.class); 
//job.setCombinerClass(ReduceClass.class); 
job.setInputFormatClass(TextInputFormat.class); 
job.setOutputFormatClass(TextOutputFormat.class); 
job.setMapOutputKeyClass(Text.class); 
job.setMapOutputValueClass(Text.class); 
//job.setOutputKeyClass(Text.class); 
//job.setOutputValueClass(Text.class); 
System.exit(job.waitForCompletion(true)?0:1); 
return 0; 

Le produit de sortie ressemble à ceci KW OA] nΕ r3 \ n " p 饚 6W jJ 9W f = 9ml dR y/Ք 7^ i M * Ք^nz l ^) 妗 j ( dRͱ/7 TS * M // 7 TS & jZ o TSR 7 @ ) o TӺ 5 {% + ۆ w6- = e _} m) ~ ʅ ژ : # j ] u >

+0

Sur intérêt, comment êtes-vous même essayer d'interpréter les données d'entrée dans votre Mapper? – jkovacs

+0

Dans le mappeur, le séparateur entre les colonnes est un onglet et j'interprète l'ensemble de champs sélectionné en utilisant la position de la colonne et la ligne de données entière par ligne est lue comme une chaîne –

Répondre

5

Je ne sais pas si quelqu'un a réellement développé un InputFormat personnalisé pour les fichiers MS Excel (j'en doute et la recherche rapide ne retourne rien), mais vous ne pouvez certainement pas lire un fichier Excel en utilisant le TextInputFormat. Les fichiers XSL sont binaires. Solution: Exportez votre fichier Excel au format CSV ou TSV, puis vous pourrez le charger en utilisant TextInputFormat.

0

Vous pouvez également utiliser la bibliothèque HadoopOffice, ce qui vous permet de lire/écrire Excel avec Hadoop et Spark. Il est disponible sur les packs Maven Central et Spark.

https://github.com/ZuInnoTe/hadoopoffice/wiki

Questions connexes