我一直在努力设置一个从 csv 文件创建Datastream<Tuple3<Integer, java.sql.Time, Double>>
的 flink 应用程序。此文件中的列(列ID, dateTime and Result
(都是字符串,但它们应转换为整数、java.sql.Time 和 Double。我想要的另一件事是创建每天包含数据的翻转窗口,并平均该窗口中result
列的值。问题是我不知道它的确切语法。请参阅我尝试过的下面的代码。最后一部分我有 sum(2(,但我想计算窗口的平均值。我在文档中没有看到此功能的功能。我需要自己为此编写一个方法吗?
DataStream<Tuple3<String, java.sql.Time>> dataStream = env
.readfile(path)
.map()
.keyBy(0)
.timeWindow(Time.days(1));
您可以使用自己的逻辑来读取 csv 或使用像univocity_parsers这样的库。而不是使用环境。可以使用 env 的读取文件。来自集合(列表(。
这是图书馆的链接 如果你需要: https://www.univocity.com/pages/univocity_parsers_tutorial#using-annotations-to-map-your-java-beans
你可以给自己的转换器一个匿名@Convert(conversionClass =YourDataTimeCoverter.class(
有关平均值,请参阅以下带有示例的 flink 文档:。
https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#aggregatefunction