我试图在Flink的数据流上应用每窗口功能。以下是我的代码
DataStream<Tuple2<String, String>> data = ...
DataStream<Tuple2<String, String>> freqCityChangeTransactions = data
.keyBy(0)
.timeWindow(Time.seconds(5))
.process(new MyProcessWindowFunction());
下面是我的实现MyProcessWindow函数
public static class MyProcessWindowFunction
extends ProcessWindowFunction<Tuple2<String, String>, Tuple2<String, String>, String, TimeWindow> {
public void process(String key,
Context context,
Iterable<Tuple2<String, String>> input,
Collector<Tuple2<String, String>> out) {
// Do something ...
}
}
然而,当我试图通过maven编译上述代码时,我得到了以下错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project flink-examples: Compilation failure
[ERROR] /Users/furqan/Workspace/flink/src/main/java/com/baig/bank/Bank.java:[120,13] no suitable method found for process(com.baig.Bank.MyProcessWindowFunction)
[ERROR] method org.apache.flink.streaming.api.datastream.WindowedStream.<R>process(org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction<org.apache.flink.api.java.tuple.Tuple2<java.lang.String,java.lang.String>,R,org.apache.flink.api.java.tuple.Tuple,org.apache.flink.streaming.api.windowing.windows.TimeWindow>) is not applicable
[ERROR] (cannot infer type-variable(s) R
[ERROR] (argument mismatch; com.baig.Bank.MyProcessWindowFunction cannot be converted to org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction<org.apache.flink.api.java.tuple.Tuple2<java.lang.String,java.lang.String>,R,org.apache.flink.api.java.tuple.Tuple,org.apache.flink.streaming.api.windowing.windows.TimeWindow>))
[ERROR] method org.apache.flink.streaming.api.datastream.WindowedStream.<R>process(org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction<org.apache.flink.api.java.tuple.Tuple2<java.lang.String,java.lang.String>,R,org.apache.flink.api.java.tuple.Tuple,org.apache.flink.streaming.api.windowing.windows.TimeWindow>,org.apache.flink.api.common.typeinfo.TypeInformation<R>) is not applicable
[ERROR] (cannot infer type-variable(s) R
[ERROR] (actual and formal argument lists differ in length))
知道我做错了什么吗?仅供参考,我正在使用ApacheFlink 1.5.1版,并在Mac上使用maven3编译Java代码。
问题是keyBy中使用的KeySelect与ProcessWindowFunction中指定的密钥类型不匹配。您已经使用Tuple2中的索引指定了键,因此,编译器无法推断这些键将是字符串。在这种情况下,Flink将键作为元组传递。
有几种方法可以解决这个问题。如果您保持keyBy不变,那么您需要修改ProcessWindow函数以使用元组作为键类型,如果您想使用它,您必须将键转换为字符串。类似于((Tuple1
我想收集一些数据并将其存储到数据库(在Java中,使用MySQL)。其中一个数据是日期(创建/插入此条目时)。 我已经试过了 将日期转换为SQL友好的格式,但我仍然得到错误 找不到适合getDate(Date)的方法 方法结果集。getDate(int)不适用 (参数不匹配;日期无法转换为int) 方法ResultSet.get日期(字符串)不适用 (参数不匹配;日期无法转换为字符串) 错误发生在
在启动activity中找不到合适的方法是显示错误的错误是: 错误:(123,17)错误:找不到适合startActivities(Intent)方法上下文的方法。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法上下文。startActivities(Intent[])不适用(参数不匹配;Intent无法转换为Intent[])方法
算法问题:给定一个非负整数列表,将它们排列成最大的数。 例如,给定[3,30,34,5,9],形成的最大数是9534330。 注意:结果可能很大,因此需要返回一个字符串,而不是整数。 而且我还在想办法避免使用额外的空间。
我需要创建一个以id和值作为资源的ArrayList,这样我将来就可以知道给定图标在哪个id下。不幸的是,我的解决方案遇到了一个问题,如何解决? 我给出了一个错误: 错误:找不到添加(int,int)航路点图标的合适方法。添加(0,R.drawable.ic_point_默认值)
我试图用java创建一个分数计算器,我使用drop box int Joptionpane来显示算术运算,但是每当我编译代码时,总是会出现错误。 这是我得到的全部错误。 .java:47:错误:找不到适合showInputDialog(,String,int,,String[],String)的方法String input=(String)JOptionPane。showInputDialog(n
流程功能性能 这看起来像是Flink源一直在等待,直到后来的操作员从忙碌中解脱出来。这是背压处理在闪烁,有没有反正我们可以配置让流流动没有这样的间隔等待?