Spark读取日志中文乱码解决方法

问题展示

����

一般来说,这个问题多出现于GBK与UTF-8编码互相转换时。众所周知,GBK编码是windows系统的编码格式,而UTF-8是linux系统的编码格式,而且Git等开源软件也都使用UTF-8编码,所以简单了解这种编码问题就是一件十分必要的事情。

乱码切入

“����”

“锟斤拷”

"手持两把锟斤拷,口中疾呼烫烫烫,脚踏千朵屯屯屯,笑看万物锘锘锘”

先来段梗,娱乐一下,给出百科的解释,给各位科普一下
这里先分析下乱码原因,因为spark没有自己读取文件的方式所以它采用了hadoop的默认读取文件方式,一般日志文件的格式是GBK编码的,而hadoop上的编码格式默认使用UTF-8,导致最终输出乱码。

所以要正常读取文件集,需要制定编码格式是GBK的,下面通过一个案例来表示直接读取和指定方式读取的结果差别。

直接使用spark的textfile读取

SparkConf conf = new SparkConf().setAppName("first").setMaster("local");
JavaRDD<String> distFile = sc.textFile("data.txt");

由于textFile函数只能固定使用UTF-8编码格式读取文件,然后读到的结果在终端中展示为 “����”或者就是 “锟斤拷”这个样子 ,这也是“手持两把锟斤拷,口中疾呼烫烫烫;脚踏千朵屯屯屯,笑看万物锘锘锘” 这个编码梗的由来。

解决问题

既然使用大数据计算框架遇到问题,就应该用大数据本身的框架来解决问题

先调用 hadoopFile()来读取文件,然后将读到的RDD map(映射)成一个使用GBK编码新生成的字符串传导出去,调用map(p -> new String(p._2.getBytes(), 0, p._2.getLength(), “GBK”)),即可解决问题。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.hadoop.io.LongWritable
import org.apache.hadoop.io.Text
import org.apache.hadoop.mapred.TextInputFormat
import org.apache.spark.rdd.RDD
//文件存放目录
val input = "./input"
val conf = new SparkConf
val context = new SparkContext(conf)
val outputRdd = context.hadoopFile(input, classOf[TextInputFormat],classOf[LongWritable], classOf[Text]).map(pair => new String(pair._2.getBytes, 0, pair._2.getLength, "GBK"))

了解更多知识请戳下:

@Author:懒羊羊

Spark读取日志文件集中文乱码解决方法相关推荐

  1. python打包出现乱码_python解压zip包中文乱码解决方法

    乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...

  2. vs code中文乱码解决方法

    修改 1.(安装方法) 2.显示终端输入数据输出结果(完美解决) 3.修改部分:中文乱码解决方法 第一步: 第二步: 1.(安装方法) 转载于: https:blog.csdn.net/qq_4304 ...

  3. Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法

    Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...

  4. python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色)

    python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) 参考文章: (1)python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) (2)https://www.cnblog ...

  5. Sublime Text 3中文乱码解决方法以及安装包管理器方法

    Sublime Text 3中文乱码解决方法以及安装包管理器方法 参考文章: (1)Sublime Text 3中文乱码解决方法以及安装包管理器方法 (2)https://www.cnblogs.co ...

  6. axios请求GBK页面中文乱码解决方法

    axios请求GBK页面中文乱码解决方法 参考文章: (1)axios请求GBK页面中文乱码解决方法 (2)https://www.cnblogs.com/bjhl/articles/10514038 ...

  7. charles抓包工具的中文乱码解决方法

    charles抓包工具的中文乱码解决方法 参考文章: (1)charles抓包工具的中文乱码解决方法 (2)https://www.cnblogs.com/grimm/p/7494688.html 备 ...

  8. jquery的ajax()函数传值中文乱码解决方法介绍

    jquery的ajax()函数传值中文乱码解决方法介绍 参考文章: (1)jquery的ajax()函数传值中文乱码解决方法介绍 (2)https://www.cnblogs.com/xuxiaosh ...

  9. 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法

    核心提示:最近好多网友反映在使用火狐浏览器的时候,网页显示乱码的情况,这种问题通常是由于我们浏览器语言的设置有关系,下面小编就为大家分析下具体的解决办法,希望对大家有所帮助. 火狐浏览器中文乱码怎么办 ...

最新文章

  1. 【pytorch】torch.nn.GroupNorm的使用
  2. VMware vSphere 6.5 配置文档
  3. bzoj 4836: 二元运算
  4. UVa 1590 - IP Networks
  5. Linux系统命令sort详解
  6. Android自定义属性 format详解
  7. laravel -admin 禁止某一行删除
  8. 【报告分享】2020新中国人才报告:共赢人力资本新生态-哈佛商业评论.pdf(附下载链接)...
  9. Linxu 输入子系统分析
  10. x86 单线并发多拨_单线多拨软路由。真正打破网络限速,飙升网速的秘诀
  11. vue根据获取的文件名显示文件服务器上的图片
  12. 德莱联盟 计算几何 线段相交
  13. android落花效果 字体渐变,落花有情 亲花有趣
  14. 登录安全----双重MD5加密实现安全登录
  15. Fiddler实现苹果手机APP抓包
  16. Python 爬虫十六式 - 第七式:正则的艺术
  17. 批量缩小图片大小的方法
  18. OpenCV笔记:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 与 绘制矩形 cv2.rectangle() 方法介绍
  19. Win7系统优化十大技巧
  20. 计算机常用的函数类型,珍藏版:计算机二级考试MS office 常用函数

热门文章

  1. electron之v18的remote使用
  2. 打印当前页面,关闭当前页面
  3. Filmigo视频剪辑VIP,这是一款多功能视频编辑、影片剪辑、图片美化、视频/音频制作 影音软件,功能强大!
  4. 5秒之后自动跳转页面
  5. CAN/WIFI转换器 LCWLAN-600/622的功能和应用
  6. 《网页美工设计Photoshop+Flash+Dreamweaver从入门到精通》——1.2 网页美工常用工具...
  7. 深度学习技巧应用18-OFD格式文件与人工智能结合的技巧应用,实现OFD转文本、OFD自动分类与内容提取
  8. 电脑一族的护眼妙招(如果可以给您一点点帮助我也感到很欣慰)
  9. 银河麒麟高级服务器操作系统V10SP2安装JDK
  10. 卷积神经网络CNN里经典网络模型之 AlexNet全网最详解(理论篇)