一.flink算子执行过程
env -> source -> transform -> sink
1.env
根据不同的运行方式采取不同的运行环境
a.批处理
1)运行环境:ExecutionEnvironment
2)所有数据进行整体处理
3)返回的数据类型为:DataSet
b.流处理
1)运行环境:StreamExecutionEnvironment
2)流处理必须添加开启启动执行的语句: env.execute(" ")
3)不管是什么数据源都得按实时流数据进行处理
4)返回的数据类型:DataStream
2.Source算子
SourceFunction:函数
RichSourceFunction:富函数 比SourceFunction方法多,重要的两个方法:open(),close()
读取原数据的算子,创建DataStream,类似spark中的创建算子
处理的数据:文件,集合,元素,socket,kafka,自定义
写代码:主方法里进行创建环境
1)文件
a.不设置并行度的结果,如果不设置并行度,系统默认并行度为电脑的cup核数8
file:5> sensor_6,1547718201,15.40
file:6> sensor_7,1547718202,6.72
file:1> sensor_8,1547718204,12.72
file:4> sensor_1,1547718199,30.80
file:7> sensor_8,1547718203,28.72
file:2> sensor_8,1547718205,6.72
b.设置并行度 env.setParallelism(1)
file> sensor_1,1547718199,30.80
file> sensor_6,1547718201,15.40
file> sensor_7,1547718202,6.72
file> sensor_8,1547718203,28.72
file> sensor_8,1547718204,12.72
file> sensor_8,1547718205,6.72
/**
* 读取文件类型的数据源
* @param env 运行环境
* @return 返回元数据
*/
def source_File(env:StreamExecutionEnvironment) = {
//用source算子读取原文件
val dataStream_File:DataStream[String] = env.readTextFile("D:/linuxResources/data/data_flink/sensor.txt")
//输出读取到的数据
dataStream_File.print("file")
}
def main(args: Array[String]): Unit = {
//1.创建实时流处理的环境
val env:StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
//设置全局并行度为1
//输出结果
//如果不设置并行度&#