[英]Extracting timestamp from string with regex in Spark RDD
我有一个类似的日志:
[Pipeline] timestamps
[Pipeline] {
[Pipeline] echo
20:33:05 0
[Pipeline] echo
我正在尝试仅在此处提取time
信息(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
正则表达式应如何定义?
任何帮助将非常感激。
如果您有一个日志文件,其中的数据位于新行中,则无需split
它,您只需读取每一行是一个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)
如果您想使用regex严格匹配时间戳并且过滤器不匹配,则可以使用
val dates=lines.filter(value=>Character.isDigit(value.charAt(0)))
.map(_.split(" ")(0))
.filter(_.matches("""\d{2}:\d{2}:\d{2}"""))
输出:
20:33:05
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.