Flink DataStream 算子介绍及使用由于工作需要最近学习flink
现记录下Flink介绍和实际使用过程
这是flink系列的第三篇文章
算子介绍数据流常用转换方法
MapFlatMapFilterKeyByreduceUnion
算子介绍用户通过算子能将一个或多个 DataStream 转换成新的 DataStream,在应用程序中可以将多个数据转换算子合并成一个复杂的数据流拓扑。
这部分内容将描述 Flink DataStream API 中基本的数据转换API,数据转换后各种数据分区方式,以及算子的链接策略。
数据流常用转换方法 MapDataStream → DataStream
map可以理解为映射,对每个元素进行一定的变换后,映射为另一个元素。
DataStreamFlatMapdataStream = //... dataStream.map(new MapFunction () { @Override public Integer map(Integer value) throws Exception { return 2 * value; } });
DataStream → DataStream
flatmap可以理解为将元素摊平,每个元素可以变为0个、1个、或者多个元素。
dataStream.flatMap(new FlatMapFunctionFilter() { @Override public void flatMap(String value, Collector out) throws Exception { for(String word: value.split(" ")){ out.collect(word); } } });
DataStream → DataStream
评估每个元素的布尔函数并保留函数返回 true 的那些。
dataStream.filter(new FilterFunctionKeyBy() { @Override public boolean filter(Integer value) throws Exception { return value != 0; } });
DataStream → KeyedStream
逻辑上将Stream根据指定的Key进行分区,是根据key的散列值进行分区的。
dataStream.keyBy(value -> value.getSomeKey()); dataStream.keyBy(value -> value.f0);reduce
KeyedStream → DataStream
reduce是归并操作,它可以将KeyedStream 转变为 DataStream。
keyedStream.reduce(new ReduceFunctionUnion() { @Override public Integer reduce(Integer value1, Integer value2) throws Exception { return value1 + value2; } });
多个DataStream → DataStream
dataStream.union(otherStream1, otherStream2, ...);



