zoukankan      html  css  js  c++  java
  • 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查看工具中查看

     中文字符正常显示。

  • 相关阅读:
    11.1作业
    10.25作业
    10.18作业
    zancun
    10.11作业
    SQL日期格式,转自will哥
    转自pnljs 委托(Func<int,bool>)
    ORM即 对象-关系映射(转自:微冷的雨)
    跨域上传文件(还是没有明白)
    webSocket详解
  • 原文地址:https://www.cnblogs.com/iCheny/p/10108868.html
Copyright © 2011-2022 走看看