Как использовать две агрегатные функции в потоке Keyed? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь найти популярное направление, куда большее количество людей обращалось с помощью API DataStream.

Мои данные будут в формате ниже

Формат ввода:

идентификатор кабины, номер кабины, тип кабины, имя водителя кабины, текущая поездка / нет, место посадки, пункт назначения, количество пассажиров

Я попытался решить вышеуказанную проблему с помощью оператора keyBy () и связал ее с помощью операторов sum () и max (). Но я заметил, что я могу использовать только одну агрегатную функцию в ключевом потоке. Когда я попробовал обе агрегатные функции, компилятор выдает сообщение об ошибке.

Когда я попробовал описанную выше проблему, используя DataSet API с использованием функции groupBy (), я смог использовать вместе sum () и MaxBy ().

Код API DataStream

SingleOutputStreamOperator<Tuple8<String, String, String, String, Boolean, String, String, Integer>> stream=
                 environment.readTextFile("path")
                .map(new MapRideData())
                .filter(new FilterObject())
                .keyBy(6)
                .sum(7)
                .max(7);

DataSet API - нет проблем с кодом ниже

DataSet<Tuple8<String, String, String, String, Boolean, String, String, Integer>> destination =
                data.groupBy(6)
                        .sum(7)
                        .maxBy(7);
...