問題:
mapreduce中文亂碼
原因:
再用Hadoop處理數據的時候,發現輸出的時候,總是會出現亂碼,這是因為Hadoop在設計編碼的時候,是寫死的。默認是UTF-8,所以當你處理的文件編碼格式不是為UTF-8的時候,比如為GBK格式,那么就會輸出的時候就會出現亂碼。
問題解決:
解決問題非常簡單,就是轉碼,確定數據都是以UTF-8的編碼格式在運行。
在map端從文件中讀取一行數據的時候,把他轉為UTF-8格式。例如:
我的文件是GBK格式的則:
// 把數據以GBK的格式讀過來
String line = new String(value.getBytes(),0,value.getLength(),"GBK");
注意:我的value是Text類型的。
再次運行,查看結果。亂碼問題解決。