随笔分类 - Flink
摘要:基本概念 CEP CEP 就是复杂事件处理(Complex Event Processing)的缩写。而 Flink CEP 就是 Flink 实现的一个用于复杂事件处理的库。 具体的处理过程是,把事件流中的一个个简单事件,通过一定的规则匹配组合起来,这就是复杂事件,然后基于这些满足规则的一组组复杂
阅读全文
摘要:快速上手 引入依赖 要在代码中使用 TableAPI,必须引入相关的依赖。 这里的依赖是一个 Java 的“桥接器”,主要就是负责 TableAPI 和下层 DataStream API的连接支持,按照不同的语言分为 Java 版和 Scala 版。 <dependency> <groupId>or
阅读全文
摘要:检查点 检查点的保存 最理想的情况是,每处理完一个数据就保存一下当前的状态,但是这样处理效率不高。 周期性的触发保存:每隔一段时间去做一次存档,间隔时间可以进行设置。 保存的时间点:当所有任务都恰好处理完一个相同的输入数据的时候,将它们的状态保存下来。如果出现故障,我们恢复到之前保存的状态,故障时正
阅读全文
摘要:Flink 中的状态 在流处理中,数据是连续不断到来的。每个任务进行计算处理时,可以基于当前数据直接转换得到输出结果,也可以依赖一些其他数据。这些由一个任务维护,并且用来计算输出结果的所有数据,就叫作这个任务的状态。 有状态算子 算子任务可以分为无状态和有状态。 无状态的算子任务只需要观察每个独立事
阅读全文
摘要:分流 将一条数据流拆分成完全独立的两条、甚至多条流。基于一个 DataStream,得到完全平等的多个子 DataStream。 SingleOutputStreamOperator<Event> stream = env.addSource(new ClickSource()) .assignTi
阅读全文
摘要:基本处理函数 函数功能 处理函数主要是定义数据流的转换工作。 处理函数提供了一个“定时服务”,可以通过它访问流中的事件、时间戳、水位线,甚至可以注册“定时事件”。继承了 AbstractRichFunction 抽象类, 所以拥有富函数类的所有特性,同样可以访问状态和其他运行时信息。处理函数还可以直
阅读全文
摘要:时间语义 在事件发生之后,生成的数据被收集起来,首先进入分布式消息队列,然后被 Flink 系统中的 Source 算子读取,进而向下游的转换算子(窗口算子)传递,最终由窗口算子进行计算处理。 处理时间(Processing Time):执行处理操作的机器系统时间,是最简单的时间语义。 事件时间(E
阅读全文
摘要:执行环境 获取的执行环境是 StreamExecutionEnvironment 类的对象。在代码中创建执行环境的方法,就是调用这个类的静态方法。 getExecutionEnvironment 根据上下文直接得到正确的结果: 如果程序是独立运行的,返回一个本地执行环境。 如果创建了 jar 包,从
阅读全文