分享

sqoop将oracle数据表导入hive中文乱码问题

credit 发表于 2015-11-30 17:57:09 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 18714
请教各位大神一个问题,就是将oracle的表导入到hive后中文乱码,oracle库的编码格式为US7ASCII,各位大神有没有遇到过类型的问题,或者有没有好的解决方案建议,谢谢了。附注:现在已经试过convert(nsrdzdah,'utf8','US7ASCII'),但是还是乱码;还有就是修改hive jdbc jar包,感觉不靠谱就没有试

已有(4)人评论

跳转到指定楼层
arsenduan 发表于 2015-11-30 19:07:06
楼下试下修改hive
###############################################
表或者字段有中文的时候需要修改hive的元数据库的设置。
以mysql为例子,当mysql的字符集设置成utf8的时候使用hive会有问题,详细见hive的wiki。

所以当hive使用mysql作为元数据库的时候mysql的字符集要设置成latin1。
为了保存那些utf8的中文,要将mysql中存储注释的那几个字段的字符集单独修改为utf8。

修改字段注释字符集

alter table COLUMNS modify column COMMENT varchar(256) character set utf8;
修改表注释字符集

alter table TABL_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
最后别忘记修改hive的jdbc连接,将字符集修改为utf8,如

javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.0.128:3306/hive?characterEncoding=UTF-8
###############################################

回复

使用道具 举报

arsenduan 发表于 2015-11-30 19:09:56
下面是乱码问题,楼主可参考

hive-1.1.0 使用insert into values 这种方式插入中文数据乱码
http://www.aboutyun.com/thread-15963-1-1.html

【中文乱码】使用Sqoop 将Mysql数据导入到Hive中
http://www.aboutyun.com/thread-15103-1-1.html



hive表乱码
http://www.aboutyun.com/thread-13959-1-1.html

关于hive查询hbase乱码或者null的问题
http://www.aboutyun.com/thread-13221-1-1.html






回复

使用道具 举报

credit 发表于 2015-12-1 10:19:52
arsenduan 发表于 2015-11-30 19:09
下面是乱码问题,楼主可参考

hive-1.1.0 使用insert into values 这种方式插入中文数据乱码

感谢您的回复,但是现在的问题在oracle数据库里面有不同的数据来源,以前的数据编码是GBK的,使用sqoop导入hive没有问题,但是现在有一个库里面的编码是ASCII,导入到hive中文乱码,如果修改了hive,会不会造成其他数据来源的乱码,而且这些东西在公司开发环境,不好改的,还是谢谢您了
回复

使用道具 举报

arsenduan 发表于 2015-12-3 11:39:27
credit 发表于 2015-12-1 10:19
感谢您的回复,但是现在的问题在oracle数据库里面有不同的数据来源,以前的数据编码是GBK的,使用sqoop导 ...

导入的时候,先改成GBK,然后在按照sqoop的方式导入,也就是说试试进行两次编码转换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条