Preface
前言
为什么要写这本书
相比于国内很多用户来说,我接触Flink的时间不算长,我是从2019年开始学习和使用Flink解决工作中遇到的问题的,那么是什么原因促使我写这本书?
第一,我想把我对Flink特性的理解进行系统的总结。我在初期学习Flink时,在窗口、有状态计算等特性的学习上投入的成本是比较高的。随着使用Flink越来越多,对Flink的各种特性越来越熟悉,我将自己对于Flink的理解和使用经验整理成文章,并且发布在公众号“大数据羊说”上。随着公众号的读者越来越多,我也收到了越来越多的反馈。总结下来,我的文章能够吸引读者的亮点在于,我是从背景知识、要解决的问题以及Flink中的实现方案这3个角度解释Flink的技术特性,而这一点恰好是很多想要深入学习Flink但是找不到好的学习资料的读者急需的。很多读者的反馈给了我持续写文章的动力,也让我产生了写一本书来帮助更多读者的想法。
第二,我算得上是Flink SQL API的早期用户,Flink SQL API由于具有易用的特性,用户越来越多,发展势头越来越猛、而市面上关于Flink SQL API的中文资料比较少,因此我想将自己对于Flink SQL API的理解梳理出来,在推广Flink SQL API的同时也能够帮助读者学习Flink SQL API。
读者对象
本书适合以下读者阅读。
❑开设Flink相关课程的院校师生。
❑实时计算开发工程师。
❑大数据开发工程师。
如何阅读本书
本书详细剖析了Flink中的时间、窗口、有状态计算和检查点这4项核心难点,尽可能降低读者的学习成本,并且相对全面地介绍了Flink SQL API的内容。本书分为11章,各章内容层层递进。
第1~3章是Flink初学者必读内容,主要介绍Flink的由来、特性、API的使用方法和运行时的架构。
如果读者想使用Java开发一个Flink流处理作业,推荐仔细阅读第4~7章。第4章介绍Flink DataStream API中的基础接口。第5章和第6章介绍Flink中的时间、窗口、有状态计算和检查点的相关知识。第7章介绍Flink有状态流处理API。
如果读者想使用SQL开发一个Flink流处理作业,推荐仔细阅读第8~11章。第8章介绍Flink Table API和SQL API中的基础概念,第9章介绍Flink SQL API中的语法及其执行过程,第10章介绍Flink SQL API中的函数,第11章介绍Flink SQL API中的参数及SQL优化方法。
勘误和支持
由于水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,并将宝贵的意见反馈到公众号“大数据羊说”的后台中。
由于Flink技术的参考资料较少,因此书中的部分内容参考了Flink官方文档,读者可以结合Flink官网来学习。此外,书中的代码源文件可以从GitHub网站下载,地址为https://github.com/yangyichao-mango/flink-study.git。
致谢
在写作过程中,我得到了很多朋友的支持。感谢公众号的读者,因为有他们的支持,我才能坚持将本书写完。感谢我的父母将我培养成人,并时时刻刻为我传递信心和力量!
谨以此书献给我最亲爱的家人,以及众多热爱Flink的朋友!