Flink问题

1.什么时候用window?什么时候用keyBy?

当需要获取有限数据的时候,就用window,比如获取最近10秒的数据,window就是在无界的数据流上,获取一部分数据进行计算。

基本上用flink必keyBy,只用keyBy不用window,就是计算历史至今的数据,就是计算当前key的所有数据。

2.flink的state为什么有的用initre方法获取state,有的用open方法?

因为有的算子不是keyedStream,没有生命周期方法,需要实现chekpiintFuntion,重写init方法,获取state,至于状态的备份,都不用我们管,flink会自动备份,备份到jobManager的内存上,还可以备份到HDFS上,包括open方法获取的state,flink都可以自动备份。

3.滚动窗口、滑动窗口、会话窗口源码

滚动窗口底层只有一个窗口,每次用for循环,把前面过期的数据移除,留下的数据再进行计算

滑动窗口的时间窗口,是有多个window的,因为有重叠的数据

计数窗口、计数滑动窗口,底层只有一个窗口

会话窗口只有一个window    

4.会话窗口边界值

会话窗口中,最重要的参数就是会话的超时时间,也就是两个会话窗口之间的最小距离。如果相邻两个数据到来的时间间隔(Gap)小于等于指定的大小(size),那说明还在保持会话,它们就属于同一个窗口;如果gap大于size,那么新来的数据就应该属于新的会话窗口,而前一个窗口就应该关闭了。

5.窗口分组

flink开窗必group by,且先group by窗口 

6.窗口聚合的区别

  1. 分组窗口聚合
    1. 有滚动窗口、滑动、会话
    2. 一般用会话窗口的时候使用分组窗口聚合
  2.  窗口表值函数(TVF)聚合
    1. 有滚动窗口、滑动、累积
    2. 支持grouping sets
    3. 一般用滚动窗口、滑动、累积窗口的时候,用TVF
  3. Over 聚合
    1. 就是平常用的开窗函数

7.聚合函数问题

如果有sum、min、max,只能用一种开窗函数,比如从上2行到当前行,否则会报错

8.Flink CDC是什么意思?

change data capture
修改数据捕获 ,类似于Maxwell

9. 什么时候创建window?

在当前window的第一个数据到来的时候,创建

10.怎么确定window的起始时间?结束时间?

向下取整

参考源码

11.window为什么是左闭右开的?

因为底层有一个获取最大时间的方法,内部减了1ms,所以如果window是0-10秒的,那么最大时间是10-1ms=9999ms,所以此window最大只能容纳9999ms的数据,所以10秒的数据是进不去的

12.window什么时候触发计算?

10秒的数据来的时候触发计算

因为底层会调用方法获取最大时间(减1ms那个方法)

13.如果设置了3秒乱序,那么13秒的数据会落到哪个窗口?

13秒的数据来的时候,会触发0-10的窗口计算,数据会落到10-20窗口

14.window什么时候关闭

  1. 触发计算就会关闭
  2. 如果设置了窗口延迟关闭,会等延迟时间到的时候关闭,这时再来数据是可以计算的

15.设置了窗口延迟关闭,再来数据是和之前的数据一起计算吗?

不是,会单独计算,发送到下游

16.3秒乱序,5秒窗口延迟关闭,和8秒乱序,没有窗口延迟关闭的区别是什么?

一个是13秒触发计算,一个是18秒触发计算

17.flink窗口的一般开发过程

  1. 设置水位线
  2. 分组
  3. 开窗
  4. 聚合
    1. 每个组的数据,每10秒输出一次结果,发送到下游

18.什么情况下会出现:先关联不上右表,然后一会又关联上的情况?

order_info
left join order_detail_activity

比如订单的数据先到,活动的数据后到,就会出现null的情况
这是两条不同的流

19.为什么不同aggregate的自定义聚合器(Hashset)统计UV呢?而用状态?

因为怕数据不在一个并行度

20.UV是什么?DAU是什么?

  1. uniqe visit:独立访客数
  2. Daily Active User:日活,日活跃用户数量,等于UV
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值