首页 > 其他分享 >spark 的踩坑记录(二)spark 字符串截取问题

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

时间:2023-07-11 17:45:31浏览次数:32  
标签:java 函数 截取 substr 字符串 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 函数,使用反射的方式保持和其他团队使用统一的字符串函数,完成截取之后的数据的统一。

 

标签:java,函数,截取,substr,字符串,spark
From: https://www.cnblogs.com/eric-ln/p/17545470.html

相关文章

  • js中字符串的方法
    字符串的17种方法。。。。。。length:返回字符串的长度。conststr="Hello,World!";console.log(str.length);//输出13charAt(index):返回指定索引位置的字符。conststr="Hello,World!";console.log(str.charAt(4));//输出oconcat(str1,str2,...):连接两个或多......
  • 字符串转换
    ///<summary>///ushort[]转string///</summary>///<paramname="inUshort">ushort数组</param>///<returns>string字符串</returns>publicstaticstringUShortConvertToString(ushor......
  • 字符串操作:如何实现字符串的反转及替换?
    1.字符串操作反转:操作反转使用StringBuilder更为方便,StringBuilder可以在原始对象上进行更改,避免了不必要的内存开销,且快捷方便。publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder();//创建sb可变字符串对象sb.append("hello"......
  • 将document输出为字符串
    //获取整个文档对象constdoc=document.implementation.createDocument(null,'html',null);doc.documentElement.innerHTML=document.documentElement.innerHTML;//创建一个XML序列化器constserializer=newXMLSerializer();//将文档对象序列化为字符串const......
  • Java大厂面试必考真题算法篇(持续更新)十一、java 统计字符串中每个字符出现的次数
    一、写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。答案importjava.util.*;publicclassSolution{/***反转字符串*@paramstrstring字符串*@returnstring字符串*/publicStringsolve(Stringstr){if(str......
  • JS 处理字符串的时间差 及 比较时间的大小
    <!--JS处理字符串的时间差及比较时间的大小--><html><head><script>(function(){cc();})();functioncc(){vartime1="2012-02-20"vartime2="2015-02-14"vartmpBeginTime=newDate(tim......
  • js 如何使用 join() 方法将数组的所有元素组成一个字符串。
    <html><body><scripttype="text/javascript">vararr=newArray(3);arr[0]="George"arr[1]="John"arr[2]="Thomas"document.write(arr.join());document.write("<br/>&q......
  • delphi 生成重复字符串
    生成重复字符串代码重复字符或字符串usesSystem.StrUtils;procedureTForm1.Button1Click(Sender:TObject);vars:string;begin//返回重复字符s:=StringOfChar('A',10);Memo1.Lines.Add(s);//返回重复字符串s:=DupeString('ABC',5);Memo1.Lin......
  • C风格字符串
    C风格字符串关于C风格字符串的问题❓C++有string为什么还要学习C风格字符串?某些场景使用C风格字符串更方便、更高效C标准库、Linux库、开源库和数据库的接口函数,一定有C语言但不一定有C++(MySQL的接口函数只有C而没有C++)String是类,封装了C风格字符串(学习C风格字符串能帮助......
  • Java字符串比较 == 和 equals方法的区别
    今天在排除一个bug的时候出现了一个很低级但是也很容易被忽视的错误,在此写了一个小例子做记录。首先我先说一下错误的场景,我读取了一段json数据,并使用JSONObject的实例对象的getString方法去拿到了一个value数据,由于我忽视了getString方法的返回值是一个String对象,所以我在后面......