scala—正在使用on pattern/matched/replace/split spark函数的重用字符串

tcomlyy6  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(598)

我有一个没有分隔符的文本文件,它就像一张购物券,大多数交易都是以:


**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**

目标:


**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("|")
ego6inou

ego6inou1#

使用regex replace和insert可重用在pattern/matched/replace/split上使用的字符串。
str.replaceall((regex1)(regex2),“$1插入$2”)

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

相关问题