排序 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.

    没有很好的方法来做到这一点