gpt4 book ai didi

regex - 在 Spark RDD 中使用正则表达式从字符串中提取时间戳

转载 作者:可可西里 更新时间:2023-11-01 16:24:31 27 4
gpt4 key购买 nike

我有一个像这样的日志:

[Pipeline] timestamps
[Pipeline] {
[Pipeline] echo
20:33:05 0
[Pipeline] echo

我试图只在此处提取时间信息 (20:33:05)。

我已尝试执行以下操作:

val lines = sc.textFile("/logs/log7.txt")  
val individualLines=lines.flatMap(_.split("\n")) //Splitting file contentinto individual lines
val dates=individualLines.filter(value=>value.startsWith("[0-9]"))

我得到的输出是

MapPartitionsRDD[3] at filter at DateExtract.scala:30

这里应该如何定义正则表达式?

如有任何帮助,我们将不胜感激。

最佳答案

如果你有一个新行数据的日志文件,你不必拆分它,你可以简单地读取每一行是一个String数据

然后通过Character.isDigit这个函数检查它是否以数字开头

  val lines = sc.textFile("/logs/log7.txt")
val dates=lines.filter(value=>Character.isDigit(value.charAt(0)))
.map(_.split(" ")(0))
dates.foreach(println)

如果你想严格匹配时间戳与正则表达式和过滤器不匹配那么你可以使用

val dates=lines.filter(value=>Character.isDigit(value.charAt(0)))
.map(_.split(" ")(0))
.filter(_.matches("""\d{2}:\d{2}:\d{2}"""))

输出:

20:33:05

希望这对您有所帮助!

关于regex - 在 Spark RDD 中使用正则表达式从字符串中提取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com