我正在尝试在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>
答案 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软件包上使用。