Spark Scala 读取GBK文件的方法

Posted 大数据|学姐笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件的读取方法是,显示文件正常
 

以上是关于Spark Scala 读取GBK文件的方法的主要内容,如果未能解决你的问题,请参考以下文章

Spark,Scala在从文件读取后无法正确创建视图

在 Spark/Scala 中写入 HDFS,读取 zip 文件

idea中spark项目Scala语言读取properties文件

scala 如何读取 csv 文件

scala 如何读取 csv 文件

scala 如何读取 csv 文件