Прочитайте файл CSV с 3 столбцами в Datastream. JAVA Apache Flink - PullRequest
0 голосов
/ 14 октября 2019

Я долго пытался настроить приложение flink, которое создает Datastream<Tuple3<Integer, java.sql.Time, Double>> из CSV-файла. Все столбцы в этом файле (столбцы ID, dateTime and Result) являются строковыми, но их следует преобразовать в целые, java.sql.Time и Double. Другая вещь, которую я хочу, - это создавать падающие окна с данными за день и усреднять значения столбца result в этом окне. Проблема в том, что я не знаю точный синтаксис для него. Смотрите мой код ниже, что я пытался. В последней части у меня есть сумма (2), но я хочу рассчитать среднее значение для окон. Я не видел в функции для этого в документации. Нужно ли самому писать метод для этого?


DataStream<Tuple3<String, java.sql.Time>> dataStream = env
                .readfile(path)
                .map()
                .keyBy(0)
                .timeWindow(Time.days(1));

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете использовать свою собственную логику для чтения csv или использовать библиотеку, например, univocity_parsers. И вместо использования env. readfile вы можете использовать env. fromCollection (list).

Вот ссылка на библиотеку. Если вам нужно: https://www.univocity.com/pages/univocity_parsers_tutorial#using-annotations-to-map-your-java-beans

Вы можете назначить свой собственный конвертер с анотациями @ Convert (translationClass = YourDataTimeCoverter .class)

Для среднего значения обратитесь к следующей документации flink с примером:.

https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#aggregatefunction

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...