Spark Scala 讀取GBK文件的方法



1. 在生產環境下,很多文件是GBK編碼格式的,而SPARK 常用的textFile方法默認是寫死了讀UTF-8格式的文件,其他格式文件會顯示亂碼

用如下代碼實現讀取GBK文件的方法
 
        
import org.apache.hadoop.io.{LongWritable, Text}
import org.apache.hadoop.mapred.TextInputFormat
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


object GBKtoUtf8 {

def main(args: Array[String]) {
val sparkConf = new SparkConf().setMaster("local").setAppName("spark sql test")
val sc = new SparkContext(sparkConf)
//textFile 默認只支持Utf-8格式,這種方法都到的是亂碼
   //這里用的是文件夾路徑,也可以指定到具體文件
sc.textFile("/Users/hduser/Downloads/gbk").foreach(println)
//通過封裝后的方法讀取GBK文件,並講每一行數據以字符串格式返回(RDD[String])
transfer(sc,"/Users/hduser/Downloads/gbk").foreach(println)
}

def transfer(sc:SparkContext,path:String):RDD[String]={
sc.hadoopFile(path,classOf[TextInputFormat],classOf[LongWritable],classOf[Text],1)
.map(p => new String(p._2.getBytes, 0, p._2.getLength, "GBK"))
}

}
 
2. 構建測試文件

如果你用的是Mac OS,可以按照我如下步驟操作(http://www.cnblogs.com/bonnienote/p/6139545.html),打開Bash

cd /Users/hduser/Downloads/gbk

echo "Bonnie 大數據|學姐筆記 果果學姐" > test_utf8.txt

轉換命令

iconv -f UTF-8 -t GBK test_utf8.txt > test_gbk.txt

在IDEA運行上述程序,結果如下

Bonnie ����ݣ�ѧ��ʼ� ���ѧ��
Bonnie 大數據|學姐筆記 果果學姐

可以看到第一次調用textFile時,顯示文件為亂碼
而第二次調用GBK文件的讀取方法是,顯示文件正常
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM