0

我一直在努力设置一个Datastream<Tuple3<Integer, java.sql.Time, Double>>从 csv 文件创建一个 flink 应用程序。此文件中的列(columns ID, dateTime and Result)都是 String,但它们应转换为 Integer、java.sql.Time 和 Double。我想要的另一件事是使用每天的数据创建翻滚窗口并平均该result窗口中列的值。问题是我不知道它的确切语法。请参阅我尝试过的代码。最后一部分我有 sum(2),但我想计算窗口的平均值。我没有在文档中看到此功能。我需要为此自己编写一个方法吗?


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

1 回答 1

0

您可以使用自己的逻辑来读取 csv 或使用诸如 univocity_parsers 之类的库。而不是使用 env。readfile你可以使用 env. 从集合(列表)。

这是图书馆的链接如果你想要: https ://www.univocity.com/pages/univocity_parsers_tutorial#using-annotations-to-map-your-java-beans

您可以使用 anotaion @Convert (conversionClass = YourDataTimeCoverter .class)提供自己的转换器

对于平均值,请参阅以下 flink 文档并附有示例:。

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

于 2019-10-15T14:51:42.733 回答