创建项目
在准备好所有的开发环境之后,我们就可以开始开发自己的第一个Flink程序了。首先我们要做的,就是在IDEA中搭建一个Flink项目的骨架。我们会使用Java项目中常见的Maven来进行依赖管理。
1)创建工程
1.1 打开IntelliJ IDEA,创建一个Maven工程
1.2命名工程
1.3 选定这个Maven工程所在存储路径,并点击Finish,Maven工程即创建成功
2)添加项目依赖
在项目的pom文件中,添加Flink的依赖,包括flink-java、flink-streaming-java,以及flink-clients
<properties>
<flink.version>1.17.0</flink.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java</artifactId>
<version>${flink.version}</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients</artifactId>
<version>${flink.version}</version>
</dependency>
</dependencies>
开始第一个项目
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
/**
* 描述:创建一个简单的flink执行项目
*/
public class CreateExecEnv {
public static void main(String[] args) throws Exception {
// 1. 创建执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env
// 2. 获取数据来源
.fromElements("aa text", "bb text", "cc ff", "dd pro")
// 3. 转换数据格式
.flatMap(new Splitter())
//4. 重新分区
.keyBy(value -> value.f0)
//5. 统计
.sum(1)
//6. 打印结果
.print();
//7. 执行
env.execute("Window WordCount");
}
public static class Splitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
@Override
public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out) {
for (String word : sentence.split(" ")) {
out.collect(new Tuple2<>(word, 1));
}
}
}
}