问题描述
用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版权协议,转载请附上原文出处链接和本声明。