工作中遇到的问题,使用spark写入mysql报错:\xF0\x9F\x92\xAB,一般这种情况是由于插入mysql的字段含有生僻字、表情符号emoji等。
问题排查:
(1)确定该字段的编码格式是否为utf8mb4,如果不是就修改为utf8mb4,然后重新插入。
实际情况mysql表和该字段的字符集是 utf8mb4,当时就emo了,不应该插入不进去啊。

1.最后没招了就试了试把插入有问题的字段转成字节数组:
question_column“.getBytes(),然后就能把数据插入mysql了;

2.如果是sql语句就这样执行:

cast(qustion_column as BINARY)  as qustion_column

3.后面别的同事也遇到过类似问题,给出的解决方案是:

升级mysql-connector-java jar版本,将原来的5.1.45-bin版本,替换为5.1.47版本,并且将该字段的编码格式改为utf8mb4。最终结果,导入成功。

ps: 我发现我的 mysql-connector-java-5.1.46.jar 是这个版本的,估计替换成5.1.47版本就能解决问题(我没试)。建议如果大家有类似问题先参考 3 方法,如果不行再使用方法1,2。方法3,1,2的前提是先把该问题字段设置成 utf8mb4

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐