我已经花了一段时间来设置一个flink应用程序来创建一个 Datastream<Tuple3<Integer, java.sql.Time, Double>>
从csv文件。此文件中的列(列 ID, dateTime and Result
)都是字符串,但应转换为整数、java.sql.time和double。我想做的另一件事是用每天的数据创建滚动窗口,并平均 result
那个窗口中的列。问题是我不知道它的确切语法。看看下面我的代码。最后一部分是sum(2),但是我想计算windows的平均值。我在文档中没有看到用于此的函数。我需要为这个写一个方法吗?
DataStream<Tuple3<String, java.sql.Time>> dataStream = env
.readfile(path)
.map()
.keyBy(0)
.timeWindow(Time.days(1));
1条答案
按热度按时间n8ghc7c11#
您可以使用自己的逻辑来读取csv或使用类似univocity\u解析器的库。而不是使用env.readfile,您可以使用env.fromcollection(list)。
以下是图书馆的链接,以备不时之需:https://www.univocity.com/pages/univocity_parsers_tutorial#using-Mapjavabean的注解
您可以使用anotaion@convert(conversionclass=yourdatatimecoverter.class)提供自己的转换器
有关平均值,请参阅以下flink文档example:.
https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#aggregatefunction