hazelcast-jet - Hazelcast Jet 0.6.1- 多个字段的聚合
问题描述
当前的 Hazelcast Jet 0.6.1 代码示例演示了基于单个字段(例如ticker)的聚合。
这是一个参考。
\code-samples\streaming\stock-exchange\src\main\java\StockExchange.java
如何将其扩展到不止一个,例如ticker、traderId 等。
这是来自的当前示例代码 StockExchange.java
private static Pipeline buildPipeline() {
Pipeline p = Pipeline.create();
p.drawFrom(Sources.<Trade, Integer, Trade>mapJournal(TRADES_MAP_NAME,
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;
}
解决方案
对于ticker & traderId,您可以使用:
.groupingKey(trade -> Tuple2.tuple2(trade.getTicker(), trade.getTraderId()))
通常,密钥可以通过任何可以正确执行的方式来equals
实现hashCode
。Tuple2
是两个值的通用容器。
推荐阅读
- apache-kafka - Apache Kafka 分区保证消息的顺序
- apache-poi - 需要在页面末尾插入文本但表格仍在下一页继续
- xaml - Xamarin Forms - 使用 span TapGestureRecognizer 命令的 Html2Xaml 转换器问题
- pca - 可以针对特定功能对 PCA 进行规范化吗?
- java - 将专色(直接色调)添加到 PDF
- c# - 反序列化 Avro Spark
- python-3.x - 如何使用 Pandas groupby() 将具有逗号分隔的列项的字符串聚合到列表中?
- html - Flexbox - 导航栏上菜单项之间的间隙不一致
- python - Azure API 权限修复
- react-redux - 在 React Redux 中拖放一行后更新 react-table 值