开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天 juejin.cn/post/716729…
依赖
version:1.11.1
flink-java
flink-streaming-java_2.12
flink-clients_2.12
log4j:version:1.7.10
slf4j-api
slf4j-log4j12
基本步骤
1:获得一个执行环境
2:加载/创建 初始化数据
3:指定操作数据的transaction算子
4:指定数据目的地
5:调用execute()触发执行程序
Flink是延迟计算,只有在调用execute()方法时才会触发
wordCount
所有的大数据框架学习都是从wordcount开始,可以说与语言学习的Helloworld类似
核心逻辑:
//获取执行环境
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
//连接bigdata04 9001端口获取socket数据
DataStreamSource<String> text = env.socketTextStream("bigdata04", 9001);
//处理数据
SingleOutputStreamOperator<Tuple2<String, Integer>> wordCount = text.flatMap(new FlatMapFunction<String, String>() {
public void flatMap(String line, Collector<String> out) throws Exception {
String[] words = line.split(" ");
for (String word : words) {
out.collect(word);
}
}
}).map(new MapFunction<String, Tuple2<String, Integer>>() {
public Tuple2<String, Integer> map(String word) throws Exception {
return new Tuple2<String, Integer>(word, 1);
}
}).keyBy(new KeySelector<Tuple2<String, Integer>, String>() {
public String getKey(Tuple2<String, Integer> tup) throws Exception {
return tup.f0;
}
})//.keyBy(0)
.timeWindow(Time.seconds(2))
.sum(1);
//使用一个线程执行打印操作
wordCount.print().setParallelism(1);
//执行程序
env.execute("SocketWindowWordCountJava");
//执行结果打印
hello 2
me 1
you 1
以上就是wordcount的一个基本案例