开发者社区> 问答> 正文

Flink:找不到合适的方法

我正在尝试在Flink的DataStream上应用每个窗口的功能。以下是我的代码

DataStream> data = ...
DataStream> freqCityChangeTransactions = data

.keyBy(0)
.timeWindow(Time.seconds(5))
.process(new MyProcessWindowFunction());

以下是我对MyProcessWindowFunction的实现

public static class MyProcessWindowFunction
extends ProcessWindowFunction, Tuple2, 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.process(org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction,R,org.apache.flink.api.java.tuple.Tuple,org.apache.flink.streaming.api.windowing.windows.TimeWindow>) is not applicable
ERROR R
ERROR)
[ERROR] method org.apache.flink.streaming.api.datastream.WindowedStream.process(org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction,R,org.apache.flink.api.java.tuple.Tuple,org.apache.flink.streaming.api.windowing.windows.TimeWindow>,org.apache.flink.api.common.typeinfo.TypeInformation) is not applicable
ERROR R
ERROR)
我正在使用Apache Flink 1.5.1版并在Mac上使用maven3编译Java代码。

展开
收起
flink小助手 2018-12-10 10:26:52 3836 0
1 条回答
写回答
取消 提交回答
  • flink小助手会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关flink的问题及回答。

    问题是keyBy中使用的KeySelector与ProcessWindowFunction中指定的密钥类型之间存在不匹配。您已使用Tuple2中的索引指定了密钥,因此,编译器无法推断密钥将是字符串。在这种情况下,Flink将密钥作为元组传递。

    有几种方法可以解决这个问题。如果按原样保留keyBy,则需要修改ProcessWindowFunction以使用Tuple作为键类型,如果要使用它,则必须将键转换为String。有点像((Tuple1)key).f0。更好的解决方案是使用更明确的键选择器,例如keyBy(t -> t.f0),以便在编译时将键称为字符串。

    2019-07-17 23:19:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载