本文整理了Java中com.hazelcast.jet.pipeline.WindowDefinition
类的一些代码示例,展示了WindowDefinition
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WindowDefinition
类的具体详情如下:
包路径:com.hazelcast.jet.pipeline.WindowDefinition
类名称:WindowDefinition
[英]The definition of the window for a windowed aggregation operation. The enum WindowKind enumerates the kinds of window that Jet supports. To obtain a window definition, use the factory methods provided in this interface.
[中]窗口聚合操作的窗口定义。enum WindowKind枚举Jet支持的窗口类型。要获得窗口定义,请使用此界面中提供的工厂方法。
代码示例来源:origin: hazelcast/hazelcast-jet
@Override
public void addToDag(Planner p) {
if (wDef.kind() == SESSION) {
addSessionWindow(p, wDef.downcast());
} else if (aggrOp.combineFn() == null) {
// We don't use single-stage even when optimizing for memory because the
// single-stage setup doesn't save memory with just one global key.
addSlidingWindowSingleStage(p, wDef.downcast());
} else {
addSlidingWindowTwoStage(p, wDef.downcast());
}
}
代码示例来源:origin: hazelcast/hazelcast-jet
@Override
public long preferredWatermarkStride() {
return wDef.preferredWatermarkStride();
}
代码示例来源:origin: hazelcast/hazelcast-jet-demos
.window(sliding(MINUTES.toMillis(120), MINUTES.toMillis(15)))
.aggregate(linearTrend(CarCount::getTime, CarCount::getCount))
.map((TimestampedEntry<String, Double> e) ->
代码示例来源:origin: hazelcast/hazelcast-jet
private static String createName(WindowDefinition wDef) {
return wDef.kind().name().toLowerCase() + "-window";
}
代码示例来源:origin: hazelcast/hazelcast-jet-demos
/**
* Builds and returns the Pipeline which represents the actual computation.
*/
private static Pipeline buildPipeline(String modelPath) {
Pipeline pipeline = Pipeline.create();
pipeline.drawFrom(WebcamSource.webcam(500))
.mapUsingContext(classifierContext(modelPath),
(ctx, img) -> {
Entry<String, Double> classification = classifyWithModel(ctx, img);
return tuple3(img, classification.getKey(), classification.getValue());
}
)
.window(tumbling(1000))
.aggregate(maxBy(comparingDouble(Tuple3::f2)))
.drainTo(buildGUISink());
return pipeline;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
private static Pipeline buildPipeline() {
// we'll calculate two aggregations over the same input data:
// 1. number of viewed product listings
// 2. set of purchased product IDs
// Output of the aggregation will be List{Integer, Set<String>}
AggregateOperation1<ProductEvent, ?, Tuple2<Long, Set<String>>> aggrOp = allOf(
summingLong(e -> e.getProductEventType() == VIEW_LISTING ? 1 : 0),
mapping(e -> e.getProductEventType() == PURCHASE ? e.getProductId() : null, toSet())
);
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<ProductEvent>streamFromProcessor("generator",
ProcessorMetaSupplier.of(GenerateEventsP::new, 1)))
.addTimestamps(ProductEvent::getTimestamp, 0)
.groupingKey(ProductEvent::getUserId)
.window(WindowDefinition.session(SESSION_TIMEOUT))
.aggregate(aggrOp, SessionWindow::sessionToString)
.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
private static Pipeline buildPipeline() {
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<Trade, Integer, Trade>mapJournal(TRADES_MAP_NAME,
DistributedPredicate.alwaysTrue(), EventJournalMapEvent::getNewValue, START_FROM_CURRENT))
.addTimestamps(Trade::getTime, 3000)
.groupingKey(Trade::getTicker)
.window(WindowDefinition.sliding(SLIDING_WINDOW_LENGTH_MILLIS, SLIDE_STEP_MILLIS))
.aggregate(counting(),
(winStart, winEnd, key, result) -> String.format("%s %5s %4d", toLocalTime(winEnd), key, result))
.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet
private static String createName(WindowDefinition wDef) {
return wDef.kind().name().toLowerCase() + "-window";
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
@SuppressWarnings("Convert2MethodRef") // https://bugs.openjdk.java.net/browse/JDK-8154236
private static Pipeline aggregate() {
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<PageVisit, Integer, PageVisit>mapJournal(PAGE_VISIT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pv -> pv.timestamp(), 100)
.window(sliding(10, 1))
.aggregate(counting())
.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet
@Override
public void addToDag(Planner p) {
if (wDef.kind() == SESSION) {
addSessionWindow(p, wDef.downcast());
} else if (aggrOp.combineFn() == null || getOptimization() == MEMORY) {
addSlidingWindowSingleStage(p, wDef.downcast());
} else {
addSlidingWindowTwoStage(p, wDef.downcast());
}
}
代码示例来源:origin: hazelcast/hazelcast-jet
@Override
public long preferredWatermarkStride() {
return wDef.preferredWatermarkStride();
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
@SuppressWarnings("Convert2MethodRef") // https://bugs.openjdk.java.net/browse/JDK-8154236
private static Pipeline groupAndAggregate() {
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<PageVisit, Integer, PageVisit>mapJournal(PAGE_VISIT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pv -> pv.timestamp(), 100)
.window(sliding(10, 1))
.groupingKey(pv -> pv.userId())
.aggregate(toList())
.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
/**
* This code is the main point of the sample: use the source builder to
* create an HTTP source connector, then create a Jet pipeline that
* performs windowed aggregation over its data.
*/
private static Pipeline buildPipeline() {
StreamSource<TimestampedItem<Long>> usedMemorySource = SourceBuilder
.timestampedStream("used-memory", x -> new PollHttp())
.fillBufferFn(PollHttp::fillBuffer)
.destroyFn(PollHttp::close)
.build();
Pipeline p = Pipeline.create();
p.drawFrom(usedMemorySource)
.window(sliding(100, 20))
.aggregate(linearTrend(TimestampedItem::timestamp, TimestampedItem::item))
.map(tsItem -> entry(tsItem.timestamp(), tsItem.item()))
.drainTo(Sinks.map(MAP_NAME));
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
private static Pipeline buildPipeline() {
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<PriceUpdateEvent, String, Tuple2<Integer, Long>>mapJournal(
"prices",
mapPutEvents(),
e -> new PriceUpdateEvent(e.getKey(), e.getNewValue().f0(), e.getNewValue().f1()),
START_FROM_CURRENT
))
.addTimestamps(PriceUpdateEvent::timestamp, LAG_SECONDS * 1000)
.setLocalParallelism(1)
.groupingKey(PriceUpdateEvent::ticker)
.window(WindowDefinition.sliding(WINDOW_SIZE_SECONDS * 1000, 1000))
.aggregate(AggregateOperations.counting())
.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
@SuppressWarnings("Convert2MethodRef") // https://bugs.openjdk.java.net/browse/JDK-8154236
private static Pipeline coGroup() {
Pipeline p = Pipeline.create();
StreamStageWithKey<PageVisit, Integer> pageVisits = p
.drawFrom(Sources.<PageVisit, Integer, PageVisit>mapJournal(PAGE_VISIT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pv -> pv.timestamp(), 100)
.groupingKey(pv -> pv.userId());
StreamStageWithKey<Payment, Integer> payments = p
.drawFrom(Sources.<Payment, Integer, Payment>mapJournal(PAYMENT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pm -> pm.timestamp(), 100)
.groupingKey(pm -> pm.userId());
StreamStageWithKey<AddToCart, Integer> addToCarts = p
.drawFrom(Sources.<AddToCart, Integer, AddToCart>mapJournal(ADD_TO_CART,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(atc -> atc.timestamp(), 100)
.groupingKey(atc -> atc.userId());
StageWithKeyAndWindow<PageVisit, Integer> windowStage = pageVisits.window(sliding(10, 1));
StreamStage<TimestampedEntry<Integer, Tuple3<List<PageVisit>, List<AddToCart>, List<Payment>>>> coGrouped =
windowStage.aggregate3(toList(), addToCarts, toList(), payments, toList());
coGrouped.drainTo(Sinks.logger());
return p;
}
代码示例来源:origin: hazelcast/hazelcast-jet-code-samples
@SuppressWarnings("Convert2MethodRef") // https://bugs.openjdk.java.net/browse/JDK-8154236
private static Pipeline coGroupWithBuilder() {
Pipeline p = Pipeline.create();
StreamStageWithKey<PageVisit, Integer> pageVisits = p
.drawFrom(Sources.<PageVisit, Integer, PageVisit>mapJournal(PAGE_VISIT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pv -> pv.timestamp(), 100)
.groupingKey(pv -> pv.userId());
StreamStageWithKey<AddToCart, Integer> addToCarts = p
.drawFrom(Sources.<AddToCart, Integer, AddToCart>mapJournal(ADD_TO_CART,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(atc -> atc.timestamp(), 100)
.groupingKey(atc -> atc.userId());
StreamStageWithKey<Payment, Integer> payments = p
.drawFrom(Sources.<Payment, Integer, Payment>mapJournal(PAYMENT,
mapPutEvents(), mapEventNewValue(), START_FROM_OLDEST))
.addTimestamps(pm -> pm.timestamp(), 100)
.groupingKey(pm -> pm.userId());
StageWithKeyAndWindow<PageVisit, Integer> windowStage = pageVisits.window(sliding(10, 1));
WindowGroupAggregateBuilder<Integer, List<PageVisit>> builder = windowStage.aggregateBuilder(toList());
Tag<List<PageVisit>> pageVisitTag = builder.tag0();
Tag<List<AddToCart>> addToCartTag = builder.add(addToCarts, toList());
Tag<List<Payment>> paymentTag = builder.add(payments, toList());
StreamStage<TimestampedEntry<Integer, Tuple3<List<PageVisit>, List<AddToCart>, List<Payment>>>> coGrouped =
builder.build((winStart, winEnd, key, r) -> new TimestampedEntry<>(
winEnd, key, tuple3(r.get(pageVisitTag), r.get(addToCartTag), r.get(paymentTag))));
coGrouped.drainTo(Sinks.logger());
return p;
}
内容来源于网络,如有侵权,请联系作者删除!