Прочтите CSV-файл с 3 столбцами в Datastream. JAVA Apache Flink

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


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

1 ответ

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

Вот ссылка на библиотеку, если вы хотите:https://www.univocity.com/pages/univocity_parsers_tutorial

Вы можете предоставить свой собственный конвертер с помощью anotaion @Convert(conversionClass = YourDataTimeCoverter.class)

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

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

Другие вопросы по тегам