簡體   English   中英

在Spark RDD中使用正則表達式從字符串中提取時間戳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM