Apache flink 如何对flink中的多字段求和
我是Apache Flink 1.10中的sum one字段,如下所示,我接收RabbitMQ消息并在内存中处理,最后保存到MySQL,sum操作代码如下:Apache flink 如何对flink中的多字段求和,apache-flink,Apache Flink,我是Apache Flink 1.10中的sum one字段,如下所示,我接收RabbitMQ消息并在内存中处理,最后保存到MySQL,sum操作代码如下: consumeRecord.keyBy("gameType") .window(TumblingEventTimeWindows.of(Time.seconds(5))) .sum("realPumpAmount") .addSink(new
consumeRecord.keyBy("gameType")
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum("realPumpAmount")
.addSink(new SinkFunction<ReportPump>() {
@Override
public void invoke(ReportPump value, Context context) throws Exception {
// handle sink logic
}
});
consumeRecord.keyBy("gameType")
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum("field1","field2")
.addSink(new SinkFunction<ReportPump>() {
@Override
public void invoke(ReportPump value, Context context) throws Exception {
// handle sink logic
}
});
consumerrecord.keyBy(“游戏类型”)
.window(TumblingEventTimeWindows.of(时间秒(5)))
.sum(“realPumpAmount”)
.addSink(新的SinkFunction(){
@凌驾
公共void调用(ReportPump值、上下文)引发异常{
//句柄接收器逻辑
}
});
现在我想对MQ实体中的多个字段求和,如下所示:
consumeRecord.keyBy("gameType")
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum("realPumpAmount")
.addSink(new SinkFunction<ReportPump>() {
@Override
public void invoke(ReportPump value, Context context) throws Exception {
// handle sink logic
}
});
consumeRecord.keyBy("gameType")
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.sum("field1","field2")
.addSink(new SinkFunction<ReportPump>() {
@Override
public void invoke(ReportPump value, Context context) throws Exception {
// handle sink logic
}
});
consumerrecord.keyBy(“游戏类型”)
.window(TumblingEventTimeWindows.of(时间秒(5)))
.sum(“字段1”、“字段2”)
.addSink(新的SinkFunction(){
@凌驾
公共void调用(ReportPump值、上下文)引发异常{
//句柄接收器逻辑
}
});
有什么方法可以实现这个目的吗?
sum
reducer只接受一个字段。你可以自己写这样的东西:
consumeRecord.keyBy("gameType")
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.reduce((d1, d2) -> {
d1.field1 += d2.field1;
d1.field2 += d2.field2;
return d1;
})
.addSink(new SinkFunction<ReportPump>() {
@Override
public void invoke(ReportPump value, Context context) throws Exception {
// handle sink logic
}
});
consumerrecord.keyBy(“游戏类型”)
.window(TumblingEventTimeWindows.of(时间秒(5)))
.减少((d1,d2)->{
d1.field1+=d2.field1;
d1.field2+=d2.field2;
返回d1;
})
.addSink(新的SinkFunction(){
@凌驾
公共void调用(ReportPump值、上下文)引发异常{
//句柄接收器逻辑
}
});