开发环境准备
1、JDK
2、Maven
3、IDEA
使用Flink开发一个批处理应用程序
以最简单的 word count 为案例
准备一个文本,路径为 src/main/test_files/test_file
hello,welcome
hello,world,welcome
开发流程
- set up the batch execution environment
- read
- transform operations 开发的核心所在:开发业务逻辑
- execute program
Java实现
官方网址
第一种创建项目的方式
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.9.0
第二种创建项目的方式
其实是一个shell脚本
$ curl https://flink.apache.org/q/quickstart.sh | bash -s 1.9.0
使用maven创建的时候会出现一个问题
[INFO] Generating project in Interactive mode
命令行会停留在这一行很久,如何解决?在mvn后加一个参数
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.9.0 \
-DarchetypeCatalog=local
之后分别输入红框中自定义名字
成功
java代码
package com.kun.flink.java.chapter02;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
/**
* 使用java api来开发Flink的批处理应用程序
*/
public class BatchWCJavaAPP {
public static void main(String[] args) throws Exception {
String input = "src/main/test_files/test_file";
//step1、获取运行环境
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
//step2、read data
DataSource<String> text = env.readTextFile(input);
//step3、transform
//每一行数据按照指定的分隔符拆分
text.flatMap(new FlatMapFunction<String, Tuple2<String,Integer>>() {
@Override
public void flatMap(String s, Collector<Tuple2<String,Integer>> collector) throws Exception {
String[] strings = s.toLowerCase().split(",");
for(String string