【问题标题】:split the large sequence of logs with start time being overlapped拆分开始时间重叠的大序列日志
【发布时间】:2020-07-30 10:01:38
【问题描述】:

我会将大量日志拆分为较小的序列,但日志的开始时间会重叠。

比如说我们有

largeLogs = {
[startTime=A, duration=22],
[startTime=B, duration=12],
[startTime=C, duration=34],
[startTime=D, duration=12],
[startTime=E, duration=18],
[startTime=F, duration=8]
}

请求输出应该是:

{[[startTime=A, duration=22],
[startTime=B, duration=12],
[startTime=C, duration=34]],

[[startTime=B, duration=12],
[startTime=C, duration=18],
[startTime=D, duration=8]],

[[startTime=c, duration=12],
[startTime=D, duration=18],
[startTime=E, duration=8]]}

我用python写了如下

def split_func(batchSize, logs):
    batchSize = min(batchSize, len(logs)-1)
    return [logs[i:i+b4] for i in range(len(logs) - batchSize+1)]

由于我是 scala 的新手,所以我尝试写如下,但我卡在了最后一行

def split_func(batchSize:Int, partialLogs: ListBuffer[Array[Byte]] ) : ListBuffer[Array[Byte]] = {

    batchSize = Math.min(batchSize, partialLogs.size - 1) // getting error reassignment to val

    val i = 0 to partialLogs.size - batchSize+1

    return [lst[i:i+n] // no idea how to change this line from python to scala

【问题讨论】:

    标签: python list scala split overlapping


    【解决方案1】:

    有一个名为 sliding 的 Scala 方法可以满足您的需求:

    partialLogs.sliding(batchSize, batchSize-overlapSize)
    

    第一个参数是每个块的大小,第二个参数是每个块开始之间的间隙。

    【讨论】:

    • Scala 中有很多有用的库方法,因此在编写自定义例程之前值得浏览一下库文档。当然,阅读 StackOverflow 的答案 :)
    猜你喜欢
    • 2015-03-07
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2016-01-12
    • 2012-03-07
    相关资源
    最近更新 更多