Прочтите 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