在pyspark中使用if条件进行分组

时间:2016-09-13 10:17:35

标签: apache-spark pyspark

我想使用特定条件对日志进行分组。我有一组日志,我从中提取时间。现在根据时间条件我想过滤掉那些日志并将它们存储在内存本身(而不是单独的文件中)以执行进一步的计算。时间条件如下: 如果第一个值与时间戳中的剩余值之间的差值<= 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

0 个答案:

没有答案