亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hadoop中mapreduce程序如何處理GBK編碼數據并輸出GBK編碼數據

發布時間:2021-12-01 14:54:16 來源:億速云 閱讀:243 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關Hadoop中mapreduce程序如何處理GBK編碼數據并輸出GBK編碼數據,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Hadoop 中文編碼相關問題 -- mapreduce程序處理GBK編碼數據并輸出GBK編碼數據

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

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

此時只需在mapper或reducer程序中讀取Text時,使用transformTextToUTF8(text, "GBK");進行一下轉碼,以確保都是以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類型造成的。初學時,一直認為和LongWritable對long的封裝一樣,Text類型是String的Writable封裝。但其實Text和String還是有些區別,它是一種UTF-8格式的Writable,而Java中的String是Unicode字符。所以直接使用value.toString()方法,會默認其中的字符都是UTF-8編碼過的,因而原本GBK編碼的數據使用Text讀入后直接使用該方法就會變成亂碼。

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

如果需要map/reduce輸出其它編碼格式的數據,需要自己實現OutputFormat,在其中指定編碼方式,而不能使用默認的TextOutputFormat。

上述就是小編為大家分享的Hadoop中mapreduce程序如何處理GBK編碼數據并輸出GBK編碼數據了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天台县| 宁国市| 汪清县| 潞城市| 峨眉山市| 焉耆| 柳林县| 屏边| 府谷县| 陈巴尔虎旗| 宜州市| 周宁县| 闻喜县| 建始县| 延川县| 左权县| 叙永县| 新河县| 新泰市| 遂溪县| 容城县| 寿阳县| 阿鲁科尔沁旗| 原平市| 古田县| 浠水县| 盈江县| 云南省| 镇原县| 美姑县| 合江县| 桂东县| 泰安市| 奉化市| 宁波市| 石柱| 苗栗县| 常宁市| 崇义县| 清原| 和林格尔县|