gpt4 book ai didi

java - apache flink 中未调用 TimeWindowAll 函数

转载 作者:行者123 更新时间:2023-12-02 11:10:59 24 4
gpt4 key购买 nike

我在 apache flink 中有一个非常简单的流管道设置,该管道工作正常,我能够将 processFunction 应用于输入数据流,如下所示:

    DataStream<MeasurementData> data = env.addSource(consumer);
DataStream<MeasurementData> dataProcessed =data.process(new FFT());
dataProcessed.print();
dataProcessed.addSink(new FlinkKafkaProducer011<>(
"localhost:9092", // Kafka broker host:port
OUTPUT_TOPIC, // Topic to write to
new MeasurementDataSchema()) // Serializer
);

现在我想在特定时间的窗口上应用 ProcessWindowFunction 操作,而不是为每个传入数据点应用该函数。我尝试过这样的:

        DataStream<MeasurementData> dataProcessed = data.timeWindowAll(Time.minutes(5))
.process(new MyProcessWindowFunction());

以及MyProcessWindowFunction()的定义:

public static class MyProcessWindowFunction extends ProcessAllWindowFunction<MeasurementData, MeasurementData, TimeWindow> {

public void process(Context context, Iterable<MeasurementData> input, Collector<MeasurementData> out) {
long count = 0;
for (MeasurementData data : input) {
for (int frequencyCounter = 0; frequencyCounter < data.data.size(); frequencyCounter++) {
matrices[frequencyCounter].addElement(data.u, data.v, data.data.get(frequencyCounter).get(0));
}
count++;
out.collect(data);
}

}
}

但是这个函数似乎永远不会被调用。我尝试将打印语句放在那里,并使用调试器单步执行整个程序。我有什么遗漏的吗?任何提示表示赞赏。

最佳答案

发现问题:环境设置为使用EventTime而不是processingTime,而我的数据不包含任何事件时间戳。

关于java - apache flink 中未调用 TimeWindowAll 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com