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查看工具中查看
中文字符正常显示。
Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案的更多相关文章
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
(1)首先创建java project 选择eclipse菜单上File->New->Java Project. 并命名为UploadFile. (2)加入必要的hadoop jar包 右 ...
- Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗
Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你没有Hadoop集群的话也没有关系,我这里给出当时我 ...
- 将本地文件上传到指定的服务器(HttpWebRequest方法)
将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. ///<summary> /// 将本地文件上传到指定的服务器(H ...
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务 ...
- scp -本地文件上传服务器,指定端口
scp 命令可以将本地文件上传服务器,或者将服务器上的文件下载到本地, 1. 上传服务器: scp [本地文件目录] [服务器用户名]@[服务器名]:/[服务器上文件路径] 比如 scp /Doc ...
- 如何把本地文件上传至github?
(都说git好用,但我觉得git把我弄得像个git……在反反复复用git bash的命令行上传失败了N次之后,终于可以用命令行把文件上传到GitHub了 这中间,还要感谢网络上的各种git教程!!!) ...
- 选择本地文件上传控件 input标签
当要通过控件来选择本地文件上传的时候的一种方式 <input type="file" id="input-file"/> 注意 type类型一定要是 ...
- ubuntu中将本地文件上传到服务器
(1)在本地的终端下,而不是在服务器上.在本地的终端上才能将本地的文件拷入服务器. (2) scp -r localfile.txt username@192.168.0.1:/home/userna ...
- Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件
利用ssh传输文件 在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@servername:/path/filename /var/www ...
随机推荐
- 【源码学习】redux-thunk
阅读 redux 源码之后,想要加深一下对中间件的理解,于是选择 redux-thunk(2.3.0)这个源码只有十几行的中间件. 之前 redux 的学习笔记 https://www.cnblogs ...
- Solr 15 - Solr添加和更新索引的过程 (文档的路由细节)
目录 1 添加文档的细节 1.1 注册观察者 - watcher 1.2 文档的路由 - document route 1.2.1 路由算法 1.2.2 Solr路由的实现类 1.2.3 implic ...
- KnockoutJS-模板绑定
对于knockoutJS来讲,模板绑定和Mapping插件绑定是十分重要的功能,虽然模板绑定在我工作中用的及其少,但模板绑定的重要性不可忽视,在其他前端框架中,如Angular.Vue等等,模板存在的 ...
- Java~命名规范
下面总结以点java命名规范 虽然感觉这些规范比起C#来说有点怪,但还是应该尊重它的命名! 命名规范 项目名全部小写 包名全部小写 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. ...
- DotNetCore跨平台~dotnet pack打包详细介绍
回到目录 dotnet pack 命令生成项目并创建 NuGet 包.这个操作的结果是两个 nupkg 扩展名的包.一个包含代码,另一个包含调试符号. 该项目被依赖的 NuGet 包装被添加到 nus ...
- 深度学习之卷积神经网络(CNN)详解与代码实现(二)
用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...
- Virtual Box虚拟机Ubuntu18.X系统安装及Mysql基本开发配置
Linux简介 什么是 Linux? Linux:世界上不仅只有一个 Windows 操作系统,还有 Linux.mac.Unix 等操作系统.桌面操作系统下 Windows 是霸主,而 Linux ...
- 浅谈基于Linux的Redis环境搭建
本篇文章主要讲解基于Linux环境的Redis服务搭建,Redis服务配置.客户端访问和防火强配置等技术,适合具有一定Linux基础和Redis基础的读者阅读. 一 Redis服务搭建 1.在根路径 ...
- .net core identity集成微信授权登录
最快的方式是直接nuget安装AspNetCore.Authentication.WeChat包. 想要知道是如何实现的,可以看下面github上面的源码. 源码在这里:https://github. ...
- http协议、模块、express框架以及路由器、中间件和mysql模块
一.http协议 是浏览器和web服务器之间的通信协议 1.通用头信息 request url:请求的url,向服务器请求的数据 request method:请求的方式 get.post sta ...