как рассчитать исторические кумулятивные данные во flink - PullRequest
0 голосов
/ 18 июня 2020

например:

Я хочу подсчитать, сколько заказов с 2019.01.01 по настоящее время в реальном времени.

Q1: Я думаю, что временное окно использования слишком велико, как я могу сохранить первое данные? Может ли globalWindow решить эту проблему? Если его можно перезапустить, и как кодировать, используйте globalWindow и триггер?

Q2: И как я могу делать это в реальном времени (timewindow всегда имеет внутренний)?

StreamExecutionEnvironment env = 
    StreamExecutionEnvironment.getExecutionEnviroment();
DataStreamSource<String> dataStreamSource = env.addSource(new 
    FlinkKafkaConsumer<>());

dataStreamSource
    .map(new MyMapFunction())
    .timeWindow(Time.days(30), Time.seconds(10))
    .keyBy("id")
    .reduce(new MyReduceFunction())
    .add(new MySink());

1 Ответ

0 голосов
/ 18 июня 2020

Это не похоже на вариант использования, в котором windows приносит какую-либо пользу. Я предлагаю подумать об этом примерно так:

dataStreamSource
    .filter(new RemoveEventsBefore20190101())
    .map(event -> new Tuple2<>(event.id, 1))
    .keyBy(0)
    .sum(1)
    .add(new MySink());
...