学习Flink:实践培训 本次培训的目标和范围 本培训介绍了Apache Flink,包括足够的内容让你开始编写可扩展的流式ETL,分析和事件驱动的应用程序,同时省略了很多(最终重要的)细节.本书的重点是为Flink管理状态和时间的API提供直接的介绍,希望在掌握了这些基础知识后,你能更好地从更详细的参考文档中获取其余需要了解的内容.每一节末尾的链接将引导你到可以学习更多知识的地方. 具体来说,您将学习 如何实现流数据处理管道 Flink如何以及为何管理国家 如何使用事件时间来持续计算准确的分析…
可查询的状态 注意:可查询状态的客户端API目前处于不断发展的状态,对所提供接口的稳定性不做保证.在即将到来的Flink版本中,客户端的API很可能会有突破性的变化. 简而言之,该功能将Flink的托管键值(分区)状态(参见Working with State)暴露给外界,并允许用户从Flink外部查询作业的状态.对于某些场景来说,可查询状态消除了与外部系统(如键值存储)进行分布式操作/交易的需求,而这往往是实践中的瓶颈.此外,该功能对于调试目的可能特别有用. 注意事项 当查询一个状态对象时,该…
术语表 Flink Application Cluster Flink应用集群是一个专用的Flink集群,它只执行一个Flink应用的Flink作业.Flink集群的寿命与Flink应用的寿命绑定. Flink Job Cluster Flink Job Cluster是一个专用的Flink Cluster,它只执行一个Flink Job.Flink Cluster的寿命与Flink Job的寿命绑定. Flink Cluster 一个分布式系统由(通常)一个JobManager和一个或多个Fl…
流式分析 事件时间和水印 介绍 Flink明确支持三种不同的时间概念. 事件时间:事件发生的时间,由产生(或存储)该事件的设备记录的时间 摄取时间:Flink在摄取事件时记录的时间戳. 处理时间:您的管道中的特定操作员处理事件的时间. 为了获得可重复的结果,例如,在计算某一天股票在交易的第一个小时内达到的最高价格时,您应该使用事件时间.这样一来,结果就不会依赖于计算的时间.这种实时应用有时会使用处理时间,但这样一来,结果就会由该小时内恰好处理的事件决定,而不是由当时发生的事件决定.基于处理时间的…
Flink操作训练场 在各种环境中部署和操作Apache Flink的方法有很多.无论这种多样性如何,Flink集群的基本构件保持不变,类似的操作原则也适用. 在这个操场上,你将学习如何管理和运行Flink Jobs.您将看到如何部署和监控应用程序,体验Flink如何从Job故障中恢复,并执行日常操作任务,如升级和重新缩放. 这个游乐场的构造 这个游乐场由一个长寿的Flink Session Cluster和一个Kafka Cluster组成. 一个Flink Cluster总是由一个JobMa…
使用DataStream API进行欺诈检测 Apache Flink提供了一个DataStream API,用于构建强大的.有状态的流式应用.它提供了对状态和时间的精细控制,这使得高级事件驱动系统的实现成为可能.在这个分步指南中,你将学习如何使用Flink的DataStream API来构建一个有状态的流应用. 你在建造什么? 在数字时代,信用卡诈骗是一个日益严重的问题.犯罪分子通过行骗或入侵不安全的系统来盗取信用卡号码.盗取的号码通过进行一次或多次小额购物来测试,通常是一美元或更少.如果这样…
生成水印 在本节中,您将了解 Flink 提供的 API,用于处理事件时间时间戳和水印.关于事件时间.处理时间和摄取时间的介绍,请参考事件时间的介绍. 水印策略介绍 为了使用事件时间,Flink需要知道事件的时间戳,这意味着流中的每个元素都需要分配其事件时间戳.这通常是通过使用TimestampAssigner从元素中的某个字段访问/提取时间戳来完成的. 时间戳分配与生成水印是同步进行的,水印告诉系统事件时间的进展.你可以通过指定一个WatermarkGenerator来配置. Flink AP…
事件时间 在本节中,您将学习如何编写时间感知的Flink程序.请看一下及时流处理,了解及时流处理背后的概念. 关于如何在Flink程序中使用时间的信息请参考windowing和ProcessFunction. 需要注意的是,为了使用事件时间感知操作,程序需要使用直接为数据定义事件时间并自己发射水印的源,或者程序必须在源之后注入一个时间戳分配器&水印生成器.这些函数描述了如何访问事件时间戳,以及事件流表现出何种程度的无序性. 下一步去哪里? Generating Watermarks: Shows…
Flink DataStream API编程指南 Flink中的DataStream程序是对数据流实现转换的常规程序(如过滤.更新状态.定义窗口.聚合).数据流最初是由各种来源(如消息队列.套接字流.文件)创建的.结果通过汇流返回,例如可以将数据写入文件,或标准输出(例如命令行终端).Flink程序可以在各种环境下运行,独立运行,或者嵌入到其他程序中.执行可以发生在本地JVM中,也可以发生在许多机器的集群中. 为了创建你自己的Flink DataStream程序,我们鼓励你从一个Flink程序的…
事件驱动的应用 处理函数 简介 ProcessFunction将事件处理与定时器和状态结合起来,使其成为流处理应用的强大构件.这是用Flink创建事件驱动应用的基础.它与RichFlatMapFunction非常相似,但增加了定时器. 例子 如果你做过 "流分析 "培训中的实战练习,你会记得它使用TumblingEventTimeWindow来计算每个司机在每个小时内的小费总和,像这样. // compute the sum of the tips per hour for each…