Я пытаюсь создать временную серию подсчета событий, произошедших за определенный период времени.
События закодированы как
PCollection<KV<String, Long>> events;
Где String является идентификатором источник события, а long - это временная метка события.
Я хочу получить PCollection<Timeseries>
временных рядов, которые имеют форму
class Timeseries {
String id;
List<TimeseriesWindow> windows;
}
class TimeseriesWindow {
long timestamp;
long count;
}
Пример игрушки с фиксированным размером окна ( это правильный термин?), равный 10 секунд , а общая продолжительность серии 60 секунд :
Ввод:
[("one", 1), ("one", 13), ("one", 2), ("one", 43), ("two", 3)]
Выход :
[
{
id: "one"
windows: [
{
timestamp: 0,
count: 2
},
{
timestamp: 10,
count: 1
},
{
timestamp: 20,
count: 0
},
{
timestamp: 30,
count: 0
},
{
timestamp: 40,
count: 1
},
{
timestamp: 50,
count: 0
}
]
},
{
id: "two"
windows: [
{
timestamp: 0,
count: 1
},
{
timestamp: 10,
count: 0
},
{
timestamp: 20,
count: 0
},
{
timestamp: 30,
count: 0
},
{
timestamp: 40,
count: 0
},
{
timestamp: 50,
count: 0
}
]
}
]
Надеюсь, это имеет смысл :)