`

解决Map Reduce读取编码为UTF-8的文件文件时,第一条数据总出错的问题

阅读更多
   hadoop涉及文件编码时,统一用UTF-8,但是当读取带有BOM的文件时,第一条数据由于包含BOM,hadoop并没有去掉,因此第一条数据处理结果总是出现误差,为了解决此问题,只需将BOM从map阶段去掉即可,如下代码:
protected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {
   byte[] bytes = value.getBytes();
   if(bytes!=null && bytes.length>2 && bytes[0]==(byte)0xEF && bytes[1]==(byte)0xBB && bytes[2]==(byte)0xBF){
	  value = new Text(Arrays.copyOfRange(bytes, 3, bytes.length)); // 去掉BOM
   }
...
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics