码迷,mamicode.com
首页 > 其他好文 > 详细

spark读取文件时对字符编码的支持

时间:2020-06-29 17:21:19      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:文件编码   val   split   NPU   inpu   bsp   get   不同   import   

在spark中常使用textFile读取文件,默认的是UTF-8编码,但在实际读取文件时,存在不同的文件编码,如果不是UTF-8编码的文件,便不能直接使用这个方法读文件。

 

以下是2种读取不同编码文件的方法,下面以ANSI的中文简体编码为例,codepage是1252.

 

方法1:使用decode方法

val spark = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._

val encoding = "cp1252" val df = spark.read.format("text").load(files).select(decode(col("value"), encoding).as("value")) val rdd1 = df.rdd.map(row => row.get(0).toString).map(_.split("\\|"))

 

方法2:使用hadoopFile方法读文件,并对每一个(k,v) 元组,使用指定编码读取字节并转换为字符串

val spark = SparkSession.builder().config(sparkConf).getOrCreate()
import spark.implicits._

val encoding = "cp1252" val rdd1 = spark.sparkContext.hadoopFile(files, classOf[TextInputFormat], classOf[LongWritable], classOf[Text]).map { case (_, t) => new String(t.getBytes, 0, t.getLength, encoding) }.map(_.split("\\|"))

 

spark读取文件时对字符编码的支持

标签:文件编码   val   split   NPU   inpu   bsp   get   不同   import   

原文地址:https://www.cnblogs.com/benfly/p/13208699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!