
有界流的定义与特点
Word Count 有界流处理基本实现
DataStream API 和常见操作符(如 flatMap, keyBy, reduce)实现数据处理。代码实现
提供有界流 Word Count 代码示例:
DataStream<String> text = env.readTextFile("input.txt");
DataStream<Tuple2<String, Integer>> counts = text
.flatMap(new Tokenizer())
.keyBy(0)
.sum(1);
counts.print();逐步解释代码逻辑,突出 readTextFile, flatMap, keyBy 和 sum 的应用。
运行与验证
扩展功能:多文件输入与时间窗口
使用 FileProcessingMode 来支持多文件处理。
增加时间窗口(TumblingWindow)来聚合数据:
counts
.keyBy(0)
.timeWindow(Time.minutes(1))
.sum(1);性能优化
env.setParallelism(4)。代码示例
无界流的定义与特点
无界流 Word Count 基本实现
输入:模拟无界流数据(如实时 Kafka 消息流)。
处理:实现流式计算,使用 Flink 的窗口机制和时间语义。
输出:每隔一定时间输出单词计数结果。
示例代码:
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(topic, new SimpleStringSchema(), properties);
DataStream<String> stream = env.addSource(consumer);
DataStream<Tuple2<String, Integer>> counts = stream
.flatMap(new Tokenizer())
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1);
counts.print();无界流处理的挑战与解决方案
性能优化与监控