Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案

 

1.问题来源及原因

用shell命令上传到HDFS中之后出现中乱码,在shell命令窗口查看如图:

在eclipse中的文件HDFS查看工具查看如图:

 

原因:上传至HDFS文件系统的文本文件(这里是A.txt)的编码格式是ISO-8859,与hdfs文件系统和eclipse默认的编码格式UTF-8不符。

2.解决方案

 把源文本文件的编码格式改为UTF-8,统一编码格式,问题完美解决。

Ubuntu中查看文件编码格式的shell命令(文件名含路径):

file 文件名

Ubuntu中改变文件编码格式的shell命令(源文件和目标文件含路径):

sudo iconv -f '源编码格式' -t '目标编码格式' 源文件 > 目标文件

经测试,ISO-8859格式的文本文件不能直接转码为UTF-8,具体原因不明。而GB-2312采用双字节编码,兼容ISO-8859,而GBK是对GB-2312的扩展,因此GBK也兼容ISO-8859,因此源文件的编码格式可以用GBK,而目标编码格式为UTF-8,经验证,可以实现转码。
操作实例

①首先,查看源文本文件A.txt的编码格式

file /data/jixian1211/A.txt

 

②改变A.txt的编码格式,输出到A1.txt

sudo iconv -f 'GBK' -t 'UTF-8' /data/jixian1211/A.txt > /data/jixian1211/A1.txt

③查看输出文件A1.txt的编码格式(源文件A.txt的编码格式依然不变)

file /data/jixian1211/A1.txt

④将A1.txt文件上传至HDFS(别忘了先启动HDFS)

hadoop fs -put /data/jixian1211/A1.txt /jixian1211/in

⑤在HDFS中查看A1.txt文件

hadoop  fs -cat /jixian1211/in/A1.txt

 中文字符正常显示。

⑥在eclipse的HDFS查看工具中查看

 中文字符正常显示。

 

转载于:https://www.cnblogs.com/iCheny/p/10108868.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值