Scala 重复使用正在使用on模式/匹配/替换/分割火花功能的字符串
我有一个没有分隔符的文本文件,它就像一张购物单,大多数交易都以以下内容开始:Scala 重复使用正在使用on模式/匹配/替换/分割火花功能的字符串,scala,apache-spark,Scala,Apache Spark,我有一个没有分隔符的文本文件,它就像一张购物单,大多数交易都以以下内容开始: **25/11/2019 05:36:32 INSERTED** 但有些人不知道,我正在试图找到一种方法,将该字符串用作分隔符,同时我还在尝试使用它,即数据添加一个“|”来分隔记录 原件: **25/11/2019 05:36:32 INSERTED (Some transactions) 25/11/2019 05:38:32 INSERTED (Some trans) 25/11/2019 05
**25/11/2019 05:36:32 INSERTED**
但有些人不知道,我正在试图找到一种方法,将该字符串用作分隔符,同时我还在尝试使用它,即数据添加一个“|”来分隔记录
原件:
**25/11/2019 05:36:32 INSERTED (Some transactions) 25/11/2019 05:38:32 INSERTED (Some trans) 25/11/2019 05:42:32 INSERTED**
目标:
但我得到:
** (Some transactions) | (Some trans) |**
我使用的最后一个函数是:
val vStringRDD = stringRDD.map{x => x.split("[0-9]{2}/[0-9]{2}/[0-9]{4}[ ]{1}[0-9]{2}:[0-9]{2}:[0-9]{2}[ ]{4}INSERTED").mkString("|")
使用Regex replace和insert可重用在pattern/matched/replace/split上使用的字符串 str.replaceAll((regex1)(regex2),“$1插入$2”)
使用Regex replace和insert可重用在pattern/matched/replace/split上使用的字符串 str.replaceAll((regex1)(regex2),“$1插入$2”)
谢谢,真的很有帮助。谢谢,真的很有帮助。
val vStringRDD = stringRDD.map{x => x.split("[0-9]{2}/[0-9]{2}/[0-9]{4}[ ]{1}[0-9]{2}:[0-9]{2}:[0-9]{2}[ ]{4}INSERTED").mkString("|")
val vStringRDD = stringRDD.map { x =>
println(s"Map: $x")
val o = x.replaceAll("()([0-9]{2}/[0-9]{2}/[0-9]{4}[ ]{1}[0-9]{2}:[0-9]{2}:[0-9]{2}[ ]{1}INSERTED)", "$1 | $2")
println(s"Output: $o")
o
}
//Output
Map: 25/11/2019 05:36:32 INSERTED (Some transactions) 25/11/2019 05:38:32 INSERTED (Some trans) 25/11/2019 05:42:32 INSERTED
Output: | 25/11/2019 05:36:32 INSERTED (Some transactions) | 25/11/2019 05:38:32 INSERTED (Some trans) | 25/11/2019 05:42:32 INSERTED