将包含3列的csv文件读入数据流 java ApacheFlink

b91juud3  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(428)

我已经花了一段时间来设置一个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));
n8ghc7c1

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

相关问题