flink 的一些概念以及 watermarks 水位线

本文介绍了Flink的流处理与批处理能力,以及流处理中的核心概念——水位线(Watermarks)在处理乱序事件中的作用。详细讲解了EventTime、Watermarks和窗口(TimeWindow、CountWindow)的概念,强调了水位线在事件时间处理中的重要性,包括如何通过AssignerWithPeriodicWatermarks和AssignerWithPunctuatedWatermarks生成Watermarks,并探讨了Watermarks在多条并行流中的应用以及在容错和恢复策略中的角色。
摘要由CSDN通过智能技术生成

批处理类似的hadoop spark 等这一批的数据的全部处理完才进行到下一个节点,中间处理的部分数据会被放到磁盘或内存cache

 

流处理如 storm flink(blink) sparkstreaming(严格意义来说不算,只是时间很小,mini-batch模拟流) 当前一个节点处理一条数据后,后一个节点接着就把数据给拉取进行处理,

 

而flink(blink) 可谓是集大成者,既能批处理又能流处理,流批合一,流批,流批,主要归功于flink采用了中比较灵活的方式,采用固定的缓存块来进行衡量是否进行流批,当缓存块超时值非常大时,为批处理,当缓存块超时值为0时可以为流处理,所以flink采用了折中的方式,通过用户控制缓存块的大小来进行处理,cache block,那么缓存块的大小呢?既然通过缓存块的超时值,那么缓存块的大小怎么确定呢?

 

flink中主要编程模型分为两中类型 datastream 和dataset分别对应与流 和批

DataSet<...> input = // [...]

DataSet<...> reduced = input

  .groupBy(/*define key here*/)

    .reduceGroup(/*do something*/);

 

    DataStream<...> input = // [...]

    DataStream<...> windowed = input

      .keyBy(/*define key here*/) //按照hash 分组

        .window(/*window specification*/);

dataset和datastream分别有不同的算子,需注意

 

flink 一般主要是on yarn有两种方式 一种是直接向yarn申请一块固定资源,太死板不灵活 yarn-session的方式

第二种,是提交flink job 的形式 推荐

 

window窗口的概念 ,因为是流计算,无边界,所以需要通过窗口来指定计算范围,主要有countWindow,TimeWindow 

countWindow 事件数量计算 一个参数时为滚动窗口,窗口之间没有重叠,每隔多少个事件统计一次,两个参数为滑动窗口,即两个窗口之间有重叠,countWindow(5,1) 每隔一个事件,计算前五次事件

TimeWindow 时间窗口 滚动 滑动2个参数 同样时间窗口和事件窗口差不多 TimeWindow(5,1) 每隔一秒计算前 五秒的数据

 

time 概念

eventtime(watermarks)  事件时间一般指事件被生产出来的时间,eventTime经常和watermarks一起使用处理乱序数据

(ingestion)进入时间  通过kafka等进入到flink的时间

process time flink正式处理的时间,一般默认就是这个时间

 

接着来说这个水位线watermars ,一般和eventTime一起来处理乱序的数据 eventTime是固定的,不受flink影响,包含着一个时间戳

需要指定一下 使用eventTime   

val env = StreamExecutionEnvironment.getExecutionEnvironment

//env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)

// altern
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值