有一种方法可以使用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]]
...
答案 0 :(得分:1)
您可以使用输出类型为List
的聚合。像
KStream<MachineId, V> inputStream = ...
KTable<MachineId, List<V>> result = inputStream.groupByKey()
.aggregate(...);
Initializer
返回空的List<V>
,Aggregator
会将值附加到列表中。
查看文档和示例以获取更多详细信息: