求指教!!!Hadoop的乱码问题如何解决?

此生再无相见时 提交于 2019-11-30 14:58:39

今天本来打算写java虚拟机的学习记录的。

但是在工作室里做任务时,出现了一个乱码问题,现在也还没有很好的解决办法,所以写出来让大家交流一下,以求好办法。

我们搭建了个由5台机器的Hadoop集群,并在之前已经做过统计分析日志记录的任务。由于日志内容都是在linux服务器(代理服务器)上生成的,用的编码都是UTF-8,而都是英文记录、源IP、目的IP、目的地址、访问时间等信息,有固定的格式,进行分析时都没有出现过很大的困难。

但是,现在则出现了比较难解决的问题?

问题:hadoop 集群处理 GBK 文件里出现乱码.

具体描述:

            我们共12G多的文本文件,这些文件都是来自门户网站,使用很简单的爬虫抓取而来。

            文件采用GBK编码格式保存。

            我们的任务过程:

            (1)把文件从linux中上传到hadoop集群上(此时的文件编码格式: GBK

            (2)使用登记分词器对文件进行分析,分解的出文章中的词汇,并保存到指定的文件中。

             在查看hadoop集群的输出到指定文件的内容时,发现里面全都是乱码。

这是我们之前分析日志文件时没有出现过的。

在找问题的解决办法时,

Google、百度、论坛都是说同样的原因:Hadoop在代码中设定的Charset为UTF-8,属于硬编码。

截图如下(点击图片链接到目标地址):




我们做了一次试验,使用UTF编码的中文文件则可以完成分析、分词过程。

这些方法都试过了,但还是没有找到一个合适的方案。现在我们只能做一下妥协,已经改了爬虫的抓取文件后的保存方式,把以后所抓取到的文件一律都以UTF编码方式保存。以便以后再做分析时,不会再出现乱码问题。

我们分析乱码出来如下的原因:

(1)GBK 文件上传到Hadoop之后编码格式改变了?这个目前还没有可以检测的方法,网上说上传后,再拿下来看是否乱码,这有可能上传改变了编码,下载时对反方向变回来了,这个不好测定?你有更好的方法吗?

(2)如网上所说,Hadoop处理文本文件的类InputFormat、OutputFormat,我今天也写的一个业,用来代替OutputFormat,来完成数据输出到Hadoop中,测试还是有问题。

(3)是否只是SSH Secure Shell显示的问题?这个问题,文件在linux本地时(还没上传到hadoop),more中文文件也是有一点点乱码,很少。这样看来,SSH Secure Shell 的原因可能性是有,但比较小,因hadoop运行输出到指定文件的内容,几乎所有文字都是乱码。

你们有Hadoop处理中文的实践吗?

有没有遇到过这样的问题,求指教?

有没有可以在Hadoop中把大批量GBK文件转换成UTF-8的代码?如果可以分享,请发到我的邮箱。

我的邮箱:guangyao1991@foxmail.com

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!