在hadoop map中读取excel文件会减少

时间:2013-04-07 22:31:01

标签: hadoop mapreduce bigdata

我正在尝试在hadoop中读取包含一些聚合数据的Excel文件。地图缩减程序似乎工作正常,但输出产生的格式不可读。我需要使用任何特殊的InputFormat读取器用于Excel Hadoop Map Reduce中的文件?。我的配置如下

   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;

输出产品看起来像这样   KW O A ]n Ε r3 \ n“ p 6W jJ 9W f= 9ml dR y/Ք 7 ^我   M *Ք^ NZL ^dRͱ/ 7TS * M // 7TS&安培)妗Ĵ(; jZoTSR 7 @ ) o TӺ 5{% + ۆ w6- = e _}m )〜 ʅ ژ :# j ] U>

3 个答案:

答案 0 :(得分:5)

我不知道是否有人为MS Excel文件开发了一个自定义的InputFormat(我怀疑它并且快速研究没有任何结果),但你肯定无法使用TextInputFormat读取Excel文件。 XSL文件是二进制文件。

解决方案:将Excel文件导出为CSV或TSV,然后您就可以使用TextInputFormat加载它们。

答案 1 :(得分:0)

我知道它有点晚了,但现在有人已经创建了excel输入格式作为此类问题的标准解决方案。阅读本文 - https://sreejithrpillai.wordpress.com/2014/11/06/excel-inputformat-for-hadoop-mapreduce/

github项目有代码库。

请看这里 - https://github.com/sreejithpillai/ExcelRecordReaderMapReduce/

答案 2 :(得分:0)

您还可以使用HadoopOffice库,它允许您使用Hadoop和Spark读/写Excel。它可以在Maven Central和Spark软件包上使用。

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