flink(V1.11.3) 流理解汇总

flink中流式计算主要是针对各种流,做各种transform的operator,了解flink中总共有哪些流,能让我们实现需求时更得心应手。

1.DataStream

    常规数据流,最常见的流类型,代表流中的元素都是同一类型,其他类型的流都是在此基础上做叠加了各种特性

2.KeyedStream

    分区流,代表流中的元素都将被提供的分区字段进行分区处理,然后再进入下一个算子进行计算

    有多少个分区取决于下一个算子的并行度,下一个算子并行度为9,则分区总数为9

3.WindowedStream

    分区窗口流,由分区流根据分窗器将分区流中的元素分到零个或一个或多个窗口中,在根据触发器触发窗口流计算窗口中的数据

    关键词:分窗器(WindowAssigner),触发器(Trigger)

4.AllWindowedStream

    统一窗口流,由常规数据流结合分窗器形成,计算由触发器触发。

    与分区窗口流的区别是,是否分区

5.ConnectedStreams

    连接流,表示两个流的合并,类似于join吧,个人理解,只是元素类型可能不一样。官网例子:

    DataStream<Integer>someStream=//...

    DataStream<String>otherStream=//...

    ConnectedStreams<Integer,String>connectedStreams=someStream.connect(otherStream);

6.SplitStream

    分割流,可以通过对父流中的元素设置规则,将父流分割成多个子流

    6.1.规则设置

        SplitStream<Integer>split=someDataStream.split(newOutputSelector<Integer>(){@OverridepublicIterable<String>select(Integervalue){List<String>output=newArrayList<String>();if(value%2==0){output.add("even");}else{output.add("odd");}returnoutput;}});

    6.2分割

    SplitStream<Integer>split;

    DataStream<Integer>even=split.select("even");

    DataStream<Integer>odd=split.select("odd");

    DataStream<Integer>all=split.select("even","odd");

7.IterativeStream 

    迭代流,对算法更新模型很有用的流。用法也很简单,从流中过滤掉一些元素重新作为输入进行计算,所以要注意不停的作为输入重复计算。

以上就是flink的所有流汇总,以及他们的一些特性。有什么问题及交流,就在下方流言吧

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 这篇文章是但不仅仅是官方文档的中文翻译,还有里面每一个方法对应的Transformation和运行时对Tas...
    铛铛铛clark阅读 10,080评论 0 12
  • 操作符将一个或多个数据流转换为新的数据流。程序可以将多个转换组合成复杂的数据流拓扑。 本节描述了基本转换、应用这些...
    尼小摩阅读 2,669评论 0 9
  • 前言 如上图,算子,也叫operation或transformation,是编写业务逻辑的核心单元,类似于Spar...
    吾系司机阅读 853评论 2 0
  • 操作符将一个或多个数据令转换为一个新的数据令。程序可以将多种转换组合成复杂的数据流拓扑。 本节将介绍基本的转换、应...
    qing_feng阅读 170评论 0 0
  • 原文链接 操作符将一个或多个DataStream转换成为新的DataStream。程序可以将多个转换组合成复杂的数...
    小C菜鸟阅读 246评论 0 0