Flink程序其实就是对数据流DataStream 进行各种转换
简单来说Flink 由以下五个步骤构成:
1 、执行环境
2 、数据源(source)
3 、数据转换操作(Transformation)
4 、数据输出(sink)
5 、触发程序执行
下面通过代码进行演示
先创建一个Emp员工类:
package com.flink.wc;
public class Emp {
public String name; // 名字
public int age; // 年龄
public int sal; // 工资
public Emp(){
}
public Emp(String name, int age, int sal) {
this.name = name;
this.age = age;
this.sal = sal;
}
@Override
public String toString() {
return "Emp{" +
"name='" + name + '\'' +
", age=" + age +
", sal=" + sal +
'}';
}
}
一段简单的Flink程序,实现对Emp类的实例 中sal属性进行加工
package com.flink.wc;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamSink;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
public class TransTest_lambda {
public static void main(String[] args) throws Exception {
// step1 数据流执行环境设置
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1); // 设置并行度
// step2 源算子 负责读取数据
DataStreamSource<Emp> streamSource = env.fromElements(
new Emp("apple", 27, 3000),
new Emp("banana", 30, 4000)
);
// step3 Transformation转换算子 对数据流进行加工
DataStream<Integer> streaml = streamSource.map(x -> x.sal + 300);
// step4 sink下沉算子 负责数据输出
DataStreamSink<Integer> streamSink = streaml.print();
// step5 执行指令 触发程序执行
env.execute();
}
}