【博学谷学习记录】超强总结,用心分享 | Flink的编程

发布时间 2023-04-10 00:32:07作者: NNNNNNNNNNNNNNNNNN

【博学谷IT技术支持】

Flink的编程

编程步骤

  • 构建流式处理环境
  • 数据源
  • 数据处理
  • 数据输出
  • 启用流式任务

Flink的算子

  • 常用算子
Source算子:用于读取数据源,包括文件、Kafka、Socket等。
Map算子:用于对数据流中的每个元素进行转换操作,将输入流中的每个元素转换为输出流中的元素。
FlatMap算子:与Map算子类似,但是可以将一个输入元素转换成多个输出元素。
Filter算子:用于对数据流进行过滤操作,过滤掉不符合条件的元素,只保留符合条件的元素。
KeyBy算子:用于将数据流按照指定的Key进行分组,将相同Key的数据分到同一个分区中。
Window算子:用于对数据流进行窗口操作,将数据流按照一定的时间或者数量进行分割,并对每个窗口中的数据进行处理。
Reduce算子:用于对数据流中相同Key的数据进行聚合操作,将相同Key的数据聚合到一起,并对聚合后的结果进行处理。
Aggregations算子:用于对数据流中的数据进行聚合操作,包括sum、min、max等聚合函数。
Union算子:用于将多个数据流合并为一个数据流。
Sink算子:用于将数据流输出到外部存储系统,包括文件、Kafka、数据库等。
  • Source类算子
File Source:用于从文件中读取数据,支持本地文件系统和分布式文件系统,如HDFS、S3等。
Socket Source:用于从网络Socket中读取数据,可以连接TCP或UDP协议的Socket。
Collection Source:用于从Java集合中读取数据,可以读取List、Set等集合类型。
Custom Source:用户可以自定义Source算子,通过实现SourceFunction接口来读取数据源。

使用Source算子时,需要指定数据源的位置和数据格式。Flink支持多种数据格式,
包括文本、CSV、JSON等,可以根据具体的应用场景选择合适的数据格式。

需要注意的是,Source算子是Flink数据流处理中的重要组成部分,对数据源的读取效率和准确性有很大的影响。
在使用Source算子时,需要对数据源的特点进行充分的了解,选择合适的算子和参数,以提高数据处理的效率和准确性。
  • Transformation类算子

  • Sink类算子

// 1 构建流式环境

// 2 数据源

// 3 数据处理
// 3.1 把输入的数据转成Tuple3对象,泛型:Tuple3<String, Integer, Long>
// 3.2 为Tuple3对象添加时间戳和水印(单调递增水印),并指定事件时间列
// 3.3 对进行分流/分组操作
// 3.4 对窗口划分,这里指定为滚动窗口,窗口大小为5秒
// 3.5 对窗口内的数据进行聚合操作
// 3.6 对结果进行转换,把Tuple3转成Tuple2操作(id,price)

// 4 数据输出

// 5 启动流式任务