flink的一些笔记
1、任务槽slotslot特点 均分隔离内存不隔离cpu可以共享同一个job中不同算子的子任务才可以共享 同一个slot并且是同时在运行的前提是属于同一个slot共享组默认都是“default”slot数量与并行度的关系slot是一种静态的概念表示最大的并发上限并行度是一种动态的概念表示实际运行占用了几个要求slot数量job并发度算子最大并行度job才能运行注意如果是yarn模式动态申请--》申请的tm数量job并行度 / 每个tm的slot数向上取整比如session一开始0个taskmanager0个slot--》提交一个job每个tm的slot数为3并行度10--》10/3向上取整申请4个tm2、转换算子transformationmap 一一对应filter true保留false去掉flatmap 一进多出一进一出、一进零出就相当于过滤、一进多出map怎么控制一进一出 》 使用returnflatmap怎么控制一进多出 》 通过collector来输出调用几次就输出几条简单聚合算子有了按键分区的数据流keyedstream必须经过keyby之后才会有就可以基于它进行聚合操作sum()、min()、max()、minBy()与min()类似在输入流上针对指定字段求最小值。不同的是min()只计算指定字段的最小值其他字段会保留最初第一个数据的值而minBy()则会返回包含字段最小值的整条数据规约聚合reduce同一个 key每来一条新数据就拿【历史聚合结果】和【新来的数据】做自定义计算输出最新聚合结果。用户自定义函数用户自定义函数分为函数类、匿名函数、富函数类分区算子分流filter分类比把数据拆分为奇数流和偶数流每个流需要单独判断侧输出流就是把数据比如s1,s2,s3,s4,s5.....拆分为支流s1支流s2剩下的都是主流合流用connect有两个map2条流进来之后各处理各的3、keyby对于flinkdatastream是没有直接进行聚合的api的所以做聚合前要先分区并行处理keyby通过指定键key可以将一条流从逻辑上划分成不同的分区也就是并行处理的子任务基于不同的key流中的数据将被分配到不同的分区所有相同key的数据发到同一个分区同一个分区内可以有多个组4、输出算子sink输出到文件输出到kafka输出到mysql自定义sink输出不推荐5、窗口类比为桶是现找的前一个桶满了之后才去找下一个桶不是一次性把需要多少桶一次性找齐基于时间、个数基于时间、个数会话窗口重点在于时间间隔基于时间6、时间语义7、水位线8、基于时间的双流联结9、处理函数10、容错机制端到端一致性11、flinksql