1. 程式人生 > >mapreduce清理資料的時候 輸出結果亂碼,已解決

mapreduce清理資料的時候 輸出結果亂碼,已解決

  問題:

  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型別的。

  再次執行,檢視結果。亂碼問題解決。