如何转动/取消转动流

时间:2017-10-20 08:00:33

标签: apache-kafka-streams

有一种方法可以使用Kafka流对PIVOT / UNPIVOT(爆炸,传播)流进行处理吗?

如果我有输入流

machineId   ts  VarName VarValue
m1  2017-10-01 00:00:00 var1    1.0
m1  2017-10-01 00:00:00 var2    2.0
m2  2017-10-01 00:00:00 var1    3.0
m2  2017-10-01 00:00:00 var3    4.0
m3  2017-10-01 00:00:00 var4    5.0
...

我想要一种获取输出流的方法

machineId   ts  Vars
m1  2017-10-01 00:00:00 [[var1, 1.0], [var2, 2.0]]
m2  2017-10-01 00:00:00 [[var1, 3.0], [var3, 4.0]]
m3  2017-10-01 00:00:00 [[var4, 5.0]]
...

1 个答案:

答案 0 :(得分:1)

您可以使用输出类型为List的聚合。像

这样的东西
KStream<MachineId, V> inputStream = ...
KTable<MachineId, List<V>> result = inputStream.groupByKey()
                                               .aggregate(...);

Initializer返回空的List<V>Aggregator会将值附加到列表中。

查看文档和示例以获取更多详细信息: