Ai
1 Star 10 Fork 16

栾昊/Flink_1.13

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
StreamWordCount.java 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
dahuanhuan 提交于 2022-04-06 21:28 +08:00 . wordcount读取文本流代码
package com.hao.wc;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
public class StreamWordCount {
public static void main(String[] args) throws Exception {
// 1. 创建流式执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 2. 读取文本流
// 获取主机名和端口号
String hostname = "hadoop102";
int port = 8888;
DataStreamSource<String> lineDSS = env.socketTextStream(hostname,port);
// 3. 转换数据格式
SingleOutputStreamOperator<Tuple2<String, Long>> wordAndOne = lineDSS.flatMap(new MySocketStreamFlapMap())
.returns(Types.TUPLE(Types.STRING,Types.LONG));//代表返回的是什么类型
// 4. 分组
KeyedStream<Tuple2<String, Long>, String> wordAndOneKS = wordAndOne.keyBy(data -> data.f0);
// 5. 求和
SingleOutputStreamOperator<Tuple2<String, Long>> result = wordAndOneKS
.sum(1);
// 6. 打印
result.print();
// 7. 执行
env.execute();
}
//定义内部类,实现FlatMapFunction接口
public static class MySocketStreamFlapMap implements FlatMapFunction<String,Tuple2<String,Long>> {
@Override
public void flatMap(String value, Collector<Tuple2<String, Long>> out) {
// 每一行数据按照 空格切分
String[] words = value.split(" ");
// 将每个单词转换成二元组输出
for (String word : words) {
out.collect(new Tuple2<>(word,1L));
}
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/luan_hao/Flink_1.13.git
git@gitee.com:luan_hao/Flink_1.13.git
luan_hao
Flink_1.13
Flink_1.13
master

搜索帮助