这是我参与「第四届青训营 」笔记创作活动的第五天
我们小组大数据项目为【作业二】简易流式计算系统,系统初级要求为自己定义一套API,然后要实现以下的5个基础算子,为了成功做出项目,对于以下五个算子(Source、Sink、Map、KeyBy、Reduce)的功能,我们需要进行了解
所以今天的重点就是,给大家介绍一下Flink五个基本算子。
Source
source是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource(sourceFunction)来为你的程序添加一个source
- fromCollection
fromCollection:从本地集合读取数据
- readTextFile
readTextFile:从文件中读取:
- readTextFile:遍历目录
readTextFile可以对一个文件目录内的所有文件,包括所有子目录中的所有文件的遍历访问方式:
- readTextFile:读取压缩文件
对于以下压缩类型,不需要指定任何额外的inputformat方法,flink可以自动识别并且解压。但是,压缩文件可能不会并行读取,可能是顺序读取的,这样可能会影响其可伸缩性。
Sink
1. collect
上面写的是把数据写入外部文件,也就是数据输出
2. writeAsText
将数据输出到文件
Flink支持多种存储设备上的文件,包括本地文件,hdfs文件等
Flink支持多种文件的存储格式,包括text文件,CSV文件等
Map-Reduce
老师建议我们看看百度百科,那我直接开搜!!
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
嘶,好像略微理解了?
KeyBy
这个我就完全不了解了
keyby 算子是根据指定的键来将DataStream流来转换为KeyedStream流,使用keyby 算子必须使用键控状态,其从逻辑上将流划分为了不想交的分区,具有相同键的记录都会被分配到同一个分区中,keyby内部使用哈希分区来实现
这一篇文章真的可以说是我的扫盲文!哎,要学的还有好多啊!
参考文章
Flink常用算子 | We Learn Flink (weflink.cn)
FlinK KeyBy分布不均匀 问题的总结思考 - 掘金 (juejin.cn)