flink进阶富函数生命周期介绍

 更新时间:2023年03月03日 10:45:47   作者:DaveCui  
这篇文章主要为大家介绍了flink进阶富函数生命周期的举例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

end-to-end exactly-once

exactly-once只能保证Flink内部状态的一致性。而这个语义主要依赖Checkpoint机制。

在外部交互的一致性则无法保证,端到端的Exactly-Once问题是分布式系统领域最具挑战性的问题之一,很多框架都在试图攻克这个难题。

Flink的exactly-once主要依赖Source和Sink提供的一些功能。Source需要支持重发功能,Sink需要采用一定的数据写入技术,比如幂等写或事务写。

对于Source重发功能,只要我们记录了输入的偏移量Offset,故障重启后数据发送方从该Offset重新开始发送数据即可。Kafka的Producer除了发送数据,还会将数据持久化写到日志文件中。如果下游应用重启,Producer根据下游提供的Offset,从持久化的文件中定位到数据,可以重新开始向下游发送数据。

Source的重发会导致一条数据被处理多次,为了保证只对下游系统产生一次影响,还需要依赖Sink的幂等写或事务写。

富函数

“富函数”是DataStream API提供的一个函数类的接口,所有Flink函数类都有其Rich版本。它与常规函数的不同在于,可以获取运行环境的上下文,并拥有一些生命周期方法,所以可以实现更复杂的功能。

富函数举例

**RichMapFunction **

**RichFlatMapFunction **

**RichFilterFunction **

Rich Function有一个生命周期的概念。典型的生命周期方法有:

  • open()方法是rich function的初始化方法,当一个算子例如map或者filter被调用之前open()会被调用。

这里可以做一些初始化工作,例如建立一个和数据源的连接

  • **close()方法是生命周期中的最后一个调用的方法,做一些清理工作。 **

这里做一些清理工作,例如断开和数据源的连接。

  • getRuntimeContext()方法提供了函数的RuntimeContext的一些信息,例如函数执行的并行度,任务的名字,以及state状态

其他的和FlatMapFunction算子的重写方法类似。

以上就是flink进阶富函数生命周期介绍的详细内容,更多关于flink 富函数生命周期的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis把返回结果封装成map类型的实现

    Mybatis把返回结果封装成map类型的实现

    本文主要介绍了Mybatis把返回结果封装成map类型的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Spring中如何操作JDBC的实现

    Spring中如何操作JDBC的实现

    这篇文章主要介绍了Spring中如何操作JDBC的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 开源的Java图片处理库实例详解

    开源的Java图片处理库实例详解

    Java 图片处理库提供了丰富的功能,用于处理和增强图像,在Java生态系统中,有几个流行的开源库可以用于图片处理,这些库提供了丰富的功能,如图像缩放、裁剪、颜色调整、格式转换等,本文介绍开源的Java图片处理库介绍,感兴趣的朋友一起看看吧
    2024-03-03
  • java实现接口的典型案例

    java实现接口的典型案例

    下面小编就为大家带来一篇java实现接口的典型案例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Restful API中的错误处理方法

    Restful API中的错误处理方法

    这篇文章主要给大家介绍了关于Restful API中错误处理方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • 简单了解redis常见客户端及Sharding机制原理

    简单了解redis常见客户端及Sharding机制原理

    这篇文章主要介绍了简单了解redis常见客户端及Sharding机制原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Jedis零基础入门及操作Redis中的数据结构详解

    Jedis零基础入门及操作Redis中的数据结构详解

    Jedis 的 API 方法跟 Redis 的命令基本上完全一致,熟悉 Redis 的操作命令,自然就很容易使用 Jedis,因此官方也推荐 Java 使用 Jedis 来连接和操作 Redis
    2022-09-09
  • Springboot 读取自定义pro文件注入static静态变量方式

    Springboot 读取自定义pro文件注入static静态变量方式

    这篇文章主要介绍了Springboot 读取自定义pro文件注入static静态变量方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java编写的实体返回VO工具

    Java编写的实体返回VO工具

    VO(value object)通常用于业务层之间的数据传递,VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。本文将介绍如何将实体转换为vo对象
    2021-05-05
  • Java Socket编程简介_动力节点Java学院整理

    Java Socket编程简介_动力节点Java学院整理

    这篇文章主要介绍了Java Socket编程简介的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05

最新评论