真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Hadoop中mapreduce程序如何處理GBK編碼數(shù)據(jù)并輸出GBK編碼數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Hadoop中mapreduce程序如何處理GBK編碼數(shù)據(jù)并輸出GBK編碼數(shù)據(jù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

公司主營業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出豐鎮(zhèn)免費做網(wǎng)站回饋大家。

Hadoop 中文編碼相關(guān)問題 -- mapreduce程序處理GBK編碼數(shù)據(jù)并輸出GBK編碼數(shù)據(jù)

輸入是GBK文件, 輸出也是 GBK 文件的示例代碼:

Hadoop處理GBK文本時,發(fā)現(xiàn)輸出出現(xiàn)了亂碼,原來HADOOP在涉及編碼時都是寫死的UTF-8,如果文件編碼格式是其它類型(如GBK),則會出現(xiàn)亂碼。

此時只需在mapper或reducer程序中讀取Text時,使用transformTextToUTF8(text, "GBK");進(jìn)行一下轉(zhuǎn)碼,以確保都是以UTF-8的編碼方式在運行。

  1. public static Text transformTextToUTF8(Text text, String encoding) {

  2. String value = null;

  3. try {

  4. value = new String(text.getBytes(), 0, text.getLength(), encoding);

  5. } catch (UnsupportedEncodingException e) {

  6. e.printStackTrace();

  7. }

  8. return new Text(value);

  9. }

這里核心代碼是: String line=new String(text.getBytes(),0,text.getLength(),"GBK"); //這里的value是Text類型

若直接使用 String line=value.toString(); 會輸出亂碼, 這是由Text這個Writable類型造成的。初學(xué)時,一直認(rèn)為和LongWritable對long的封裝一樣,Text類型是String的Writable封裝。但其實Text和String還是有些區(qū)別,它是一種UTF-8格式的Writable,而Java中的String是Unicode字符。所以直接使用value.toString()方法,會默認(rèn)其中的字符都是UTF-8編碼過的,因而原本GBK編碼的數(shù)據(jù)使用Text讀入后直接使用該方法就會變成亂碼。

正確的方法是將輸入的Text類型的value轉(zhuǎn)換為字節(jié)數(shù)組(value.getBytes()),使用String的構(gòu)造器String(byte[] bytes, int offset, int length, Charset charset),通過使用指定的charset解碼指定的byte子數(shù)組,構(gòu)造一個新的String。

如果需要map/reduce輸出其它編碼格式的數(shù)據(jù),需要自己實現(xiàn)OutputFormat,在其中指定編碼方式,而不能使用默認(rèn)的TextOutputFormat。

上述就是小編為大家分享的Hadoop中mapreduce程序如何處理GBK編碼數(shù)據(jù)并輸出GBK編碼數(shù)據(jù)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


標(biāo)題名稱:Hadoop中mapreduce程序如何處理GBK編碼數(shù)據(jù)并輸出GBK編碼數(shù)據(jù)
網(wǎng)頁路徑:http://weahome.cn/article/jeghcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部