Fink DataSet 常用API
Flink DataSet 常用API主要分为3部分:
- DataSource:是程序的数据源的输入,可以自定义数据源;
- transformation:具体的操作,对一个或多个输入进行计算处理;
- Sink:程序的输出,将Transformation处理之后的数据输出到指定的存储介质中;
一、DataSource
1、来源
DataSource | 方法 | 描述 |
---|---|---|
基于文件 | readTextFile | 读取文本文件,主要是HDFS文件 |
基于集合 | fromCollection | 主要是为了方便测试 |
二、Transformation
Flink针对DataSet提供了大量的算子:
- Map ,输入一个元素,然后返回一个元素,中间可以进行清洗转换等操作;
- FlatMap ,输入一个元素,可以返回零个、一个或多个元素;
- MapPartition ,类似Map,一次处理一个分区的数据。;
- Filter ,过滤函数,对传入的数据进行判断,符合条件的数据保留;
- keyBy ,根据指定的Key进行分组,Key相同的数据会进入同一个分区;
- Reduce ,对数据进行聚合操作,结合当前元素和上一次Reduce返回的值进行聚合操作,然后返回一个新值;
- Aggregations ,聚合函数,例如:sum(),min(),max()等;
- Distinct,返回一个数据集中去重之后的元素;
- Join ,内连接;
- OuterJoin ,外连接;
- Cross,获取两个数据集的笛卡尔积
- Union ,返回两个数据集的总和,数据类型需要一致;
- First-n ,获取集合中前N个元素;
- Sort Partition ,在本地数据集的所有分区进行排序,通过sortPartition()的链接调用来完成多个字段的排序;
Flink针对DataStream提供了一些数据分区规则:
- Hash-Partition ,根据指定的Key的散列值对数据集进行分区;
- Range-Partition ,根据指定的Key对数据集进行范围分区;
- Rebalancing ,对数据集进行再平衡、重分区和消除数据倾斜。
- Custom partitioning,自定义分区。实现Partitioner接口。
partitionCustom(partitioner,“someKey”);
或者
partitionCustom(partitioner,0);
三、Sink
Flink针对DataStream提供大量的已经实现的数据目的地Sink:
- writeAsText() ,将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString方法来获取;
- writeAsCsv ,将元组以逗号分割写入文件中,行及字段之间的分割是可配置的,每个字段的值来自对象的toString()方法;
- print(),打印每个元素的toString()方法的值到标准输出或者标准错误输出流中。