问题背景:
工程打包到服务器后,执行spark-submit作业提交,将在hdfs的文件读到mysql中的时候,出现
Image 1.png
???
乱码啦
解决:
1、查看默认字符集
show variables like 'character_set%';
Image 2.png
将这2个改成utf8
2、修改 /etc/my.cnf文件
cd /etc
sudo vi my.cnf
我添加了这三个,【client】原来我没有,collation是排序规则
提示:
mysqld下面的一定要设置成character-set-server,如果是default-character-set,重新启动mysql的时候报错
Image 4.png3、重启mysql
service mysqld restart
4、进入mysql后,查看默认字符集
show variables like 'character_set%';
Image 5.png
6、当你重新执行作业提交的时候,乱码的那个表里的数据竟然竟然没有,Empty.......其他表的数据都进来了
Image 5.png查看一下完整的建库语句,你会发现,改了半天的配置竟然还没改过来。。。
show create database cbt_project;
image.png
7、修改:
语法:ALTER DATABASE 数据库名DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
alter database cbt_project default character set utf8 collate utf8_general_ci;
再查看一下完整的建库语句:---改过来啦
show create database cbt_project;
image.png
8、删除原来的表再来一遍吧,重新创建新表,然后重新执行spark-submit提交作业,在hdfs上的数据就成功在mysql上显示
乱码解决啦~~~
Image 5.png
网友评论