spark 的踩坑记录(二)spark 字符串截取问题

 

前言


接之前的spark踩坑记录,回想起当时折磨很久的一个问题,结果导致开发中花了很长时间才完全解决。
主要原因为spark 和 java 的字符串截取函数不一致导致的。


主要技术框架背景介绍

spark : 2.4.3
scala : 2.11.12

背景

实际工作中会处理很多文本数据流,例如文章信息,评论信息等,调用的 内部的NLP相关的接口会返回一些索引值作为敏感词、关键词等,但是截取之后词义不正确。


问题描述

spark sql substr / substring 函数
java String substring 函数

在数据流的处理过程中,使用 spark sql 的 substr 函数会出现截取字符串不正确的问题。
技术侧,后续查看源码发现,spark 的 substr 内部是自实现的截取函数,底层并没有使用 java String substring;
在业务上观察,因为网络上真实的文章数据和评论等,带有各种表情包符号或其他特殊符号,其他团队提供的接口只返回了截取index,且两个截取函数面对不同的表情符号,index 可能也会互相变化,无法完成严格的统一。


解决方案


使用 spark sql reflect 函数,使用反射的方式保持和其他团队使用统一的字符串函数,完成截取之后的数据的统一。

 

posted @ 2023-07-11 17:40  Eric-Ln  阅读(193)  评论(0编辑  收藏  举报