排序 WordCount 输出 Flink
Sort WordCount Output Flink
我正在尝试学习 Flink,并且正在学习基本的 WordCount 教程。我想知道如何对数据流的输出进行排序,以便它按降序输出计数。我不需要将其另存为文本文件,只需按降序输出到控制台即可。
以下是主函数内
DataStream<String> text = env.readTextFile(<PATH TO TEXT>)
DataStream<Tuple2<String, Integer>> counts =
text.flatMap(new Tokenizer())
.keyBy(0)
.sum(1);
counts.print();
现在,这会毫无问题地写入所有计数,我只想按降序(按计数值)对计数进行排序。我试图让它与 .addSink() 一起使用,但我不明白如何使用它进行排序。
主函数内部
counts.addSink(new CustomSink());
主函数外
public static final class CustomSink implements SinkFunction<Tuple2<String, Integer>> {
public void invoke(Integer value) throws Exeception {
}
}
按时间戳以外的任何方式排序从根本上与无限流不兼容。
使用 Flink 的 SQL/Table API 可以轻松地对有界流进行排序。使用 DataStream API.
没有很好的方法来做到这一点
我正在尝试学习 Flink,并且正在学习基本的 WordCount 教程。我想知道如何对数据流的输出进行排序,以便它按降序输出计数。我不需要将其另存为文本文件,只需按降序输出到控制台即可。
以下是主函数内
DataStream<String> text = env.readTextFile(<PATH TO TEXT>)
DataStream<Tuple2<String, Integer>> counts =
text.flatMap(new Tokenizer())
.keyBy(0)
.sum(1);
counts.print();
现在,这会毫无问题地写入所有计数,我只想按降序(按计数值)对计数进行排序。我试图让它与 .addSink() 一起使用,但我不明白如何使用它进行排序。
主函数内部
counts.addSink(new CustomSink());
主函数外
public static final class CustomSink implements SinkFunction<Tuple2<String, Integer>> {
public void invoke(Integer value) throws Exeception {
}
}
按时间戳以外的任何方式排序从根本上与无限流不兼容。
使用 Flink 的 SQL/Table API 可以轻松地对有界流进行排序。使用 DataStream API.
没有很好的方法来做到这一点