我有一个日志:
time
我想在这里提取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]"))
信息(20:33:05)。
我尝试过以下操作:
MapPartitionsRDD[3] at filter at DateExtract.scala:30
我的输出为
{{1}}
如何在此定义正则表达式?
非常感谢任何帮助。
答案 0 :(得分:3)
如果您有一个包含新行数据的日志文件,则不必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)
如果您想严格匹配时间戳与正则表达式和过滤器不匹配,那么您可以使用
val dates=lines.filter(value=>Character.isDigit(value.charAt(0)))
.map(_.split(" ")(0))
.filter(_.matches("""\d{2}:\d{2}:\d{2}"""))
输出:
20:33:05
希望这有帮助!