彻底解决错误(Incorrect string value: ‘\xF0\x9F\x98\xA3\xF0\x9F...‘ for column ‘realname‘)saprk-mysql

问题描述

用spark同步mongo的数据存到mysql中,偶遇字段realname的值中有个表包含Emoji表情或者某些特殊字符,导致数据写不到mysql中   ----任务失败;

一开始错误的思路是找到这条数据把它给过滤掉,try试了n多次依旧不好使,不得已只能换个思路继续搬砖,

打开我们万能的github问题才得以解决。

github的项目地址:

https://github.com/cattom114/emoji-java

解决步骤

1、 在pom文件中一如依赖 

        <dependency>
            <groupId>com.vdurmont</groupId>
            <artifactId>emoji-java</artifactId>
            <version>5.1.1</version>
        </dependency>

2、 spark的udf函数编写

// 自定义函数使用 emoji-java工具类将 emoji表情给替换为''
    val removeEmjoi = udf(
      (duedate:String)=>
        EmojiParser.removeAllEmojis(duedate)
       )

3、替换值中含有Emoji表情或者某些特殊字符为空字符串

dataframe.withColumn("realname",removeEmjoi(col("realname")))

最后问题得到完美解决。

今天完成了人生第一次半马,以前总觉得跑五公里的人是疯子,现在我却跑完了半马,慢慢爱上跑步,尽情享受美好的人生,顺便珍惜人生的每一次第一次,跑向阳光,跑向灿烂的明天,がんばる。

 


版权声明:本文为weixin_42312342原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。