我正在尝试读取包含某些数据的Excel文件在hadoop中进行聚合.map reduce程序似乎运行良好,但是输出产生的格式不可读。是否需要在Hadoop中对Excel文件使用任何特殊的InputFormat读取器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 ^^ i
��M*Ք�^nz��l��^�)��妗�(��dRͱ/7�TS*��M//7�TS��&�jZ��o��TSR。 7�@�)�o��TӺ��5{%��+��ۆ�w6-��= e __}m�)〜��ʅ��ژ���:#�j。 ]��u����>

最佳答案

我不知道是否有人真的为MS Excel文件开发了一个自定义InputFormat(我对此表示怀疑,而快速的研究没有发现任何问题),但是您肯定不能使用TextInputFormat读取Excel文件。 XSL文件是二进制的。

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

关于hadoop - 在hadoop map中读取Excel文件减少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15868631/

10-12 20:30