我想使用特定条件对日志进行分组。我有一组日志,我从中提取时间。现在根据时间条件我想过滤掉那些日志并将它们存储在内存本身(而不是单独的文件中)以执行进一步的计算。时间条件如下: 如果第一个值与时间戳中的剩余值之间的差值<= 5,则将它们组合在一起。这将持续到所有日志已根据条件进行分区。这是我的代码:
logLine=sc.textFile("path\to\file").cache()
lines = logLine.flatMap(lambda x: x.split('\n'))
logs = lines.collect()
for line in logs :
a = re.search(rx1,line)
time = a.group() #extracting time from logs
newlst.append(float(time))
if (newlst[0] - newlst[-1]) <= 5.0 # Time condition. I got stuck here
......
logs
- &gt;包含我的所有日志
newlst
- &gt;只包含float中的时间戳
如何使用groupBy或过滤条件(或者如果有其他技术)根据时间条件按日志分组。我试过分组并过滤但没有工作。
输入:
1472120400.107 HTTP GEO er.aujf.csdh.jkhydf.eyrgt
1472120399.999 HTTP GEO er.asdhff.cdn.qyirg.sdgsg
1472120397.633 HTTP GEO er.abff.kagsf.weyfh.ajfg
1472120397.261 HTTP GEO er.laffg.ayhrff.agyfr.yawr
1472120394.328 HTTP GEO er.qfryf.aqwruf.oiuqwr.agsf
1472120393.737 HTTP GEO er.aysf.aouf.ujaf.casf
.
.
.
基于条件的最终输出(1组日志):
1472120400.107 HTTP GEO er.aujf.csdh.jkhydf.eyrgt
1472120399.999 HTTP GEO er.asdhff.cdn.qyirg.sdgsg
1472120397.633 HTTP GEO er.abff.kagsf.weyfh.ajfg
1472120397.261 HTTP GEO er.laffg.ayhrff.agyfr.yawr