
Flink
文章平均质量分 53
longlovefilm
这个作者很懒,什么都没留下…
展开
-
Flink intervalJoin 使用和原理分析
Flink中基于DataStream的join,只能实现在同一个窗口的两个数据流进行join,但是在实际中常常会存在数据乱序或者延时的情况,导致两个流的数据进度不一致,就会出现数据跨窗口的情况,那么数据就无法在同一个窗口内join。这两个方法调用的都是processElement方法。(1)获取记录的值和时间戳,判断是否延时,当到达的记录的时间戳小于水位线时,说明该数据延时,不去处理,不去关联另一条流的数据。假设目前流到达的数据的时间戳为10s,between传进去的时间分别为1s,5s,...原创 2022-08-16 18:06:05 · 1682 阅读 · 0 评论 -
flink uv计算方案
flink去重原创 2022-07-18 19:25:15 · 898 阅读 · 0 评论 -
Flink实战: 窗口TopN分析与实现1
flink topN 红黑树 性能优化原创 2022-06-07 14:44:54 · 196 阅读 · 0 评论 -
flink窗口机制分享
1 应用场景2 什么是窗口dataStreamSource.flatMap(new MyFlatMapFunction()) .keyBy("") .timeWindow(Time.seconds(10)) .allowedLateness(Time.seconds(12)) //允许多大的延迟[00:00:00,00:00:10)[00:00:10,00:00:20)...[00:00:50,00:01:00)3 窗口分原创 2021-11-26 15:56:55 · 1375 阅读 · 0 评论 -
flink kafka 消费以及生产并行度设置
1 flink consumer kafka数据2 flink producer kafka数据刚确认了下:配置keyby ,走fixed策略 ,保证消息有序; 不用keyby, 用robin策略原创 2021-05-30 17:30:54 · 4894 阅读 · 0 评论 -
flink 多种trigger及其应用场景分析
https://www.bilibili.com/video/BV1n54y1976u/12原创 2020-12-08 19:46:33 · 370 阅读 · 0 评论 -
flink源码阅读---Flink intervalJoin 使用和原理分析
1.前言Flink中基于DataStream的join,只能实现在同一个窗口的两个数据流进行join,但是在实际中常常会存在数据乱序或者延时的情况,导致两个流的数据进度不一致,就会出现数据跨窗口的情况,那么数据就无法在同一个窗口内join。Flink基于KeyedStream提供的interval join机制,intervaljoin 连接两个keyedStream, 按照相同的key在一个相对数据时间的时间段内进行连接。2.代码示例将订单流与订单品流通过订单id进行关联,获得订单流中的会员原创 2020-11-30 23:36:24 · 571 阅读 · 0 评论 -
Flink之state processor api实践
前不久,Flink社区发布了FLink 1.9版本,在其中包含了一个很重要的新特性,即state processor api,这个框架支持对checkpoint和savepoint进行操作,包括读取、变更、写入等等。savepoint的可操作带来了很多的可能性:作业迁移 1.跨类型作业,假如有一个storm作业,将状态缓存在外部系统,希望更好的利用flink的状态机制来增加作业的稳定和减少数据的延迟,但如果直接迁移,必然面临状态的丢失,这时,可以将外部系统的状态转换为flink作业的savepo原创 2020-11-26 00:46:33 · 1189 阅读 · 0 评论 -
flink监控1---延时监控
什么是延时监控?延时监控,简单理解监控算子到算子的延迟时间。记录算子间或者源流入到算子时间,监控系统健康以及调节。流式计算中处理延迟是一个非常重要的监控metricflink中通过开启配置 metrics.latency.interval 来开启latency后就可以在metric中看到askManagerJobMetricGroup/operator_id/operator_subtask_index/latency指标了如果每一条数据都打上时间监控 输出时间- 输入时间,会大量...原创 2020-11-25 23:34:07 · 1612 阅读 · 0 评论 -
flink消费kafka管理offset
通过自定义kafkaconsumer的反序列方式是可以拿到kafka message的所有信息的,包括topic partition offset等。自行设置偏移量保存位置这里采用了zookeeper作为保存的地址,就是实时更新偏移量属性。再job挂掉后重新拉取偏移量保存下来就能一次消费啦,但真正做到一次消费必须和业务场景结合来做,比如事务。废话不多说啦,我本地实现了一个例子 <dependency> <groupId&g..原创 2020-11-25 20:10:35 · 2758 阅读 · 0 评论 -
flink随笔1
1从 API 到 逻辑算子 Transformation,再到 物理算子Operator,就生成了 StreamGraph。下一步Flink会依据StreamOperator来生成 JobGraph。2作业图(JobGraph)是唯一被Flink的数据流引擎所识别的表述作业的数据结构,也正是这一共同的抽象体现了流处理和批处理在运行时的统一。至此就完成了从用户业务代码到Flink运行系统的转化。3 yn 数量对perjob 模式不起作用吗???4 process() 前面必须有keyby, 原..原创 2020-11-25 17:25:27 · 171 阅读 · 0 评论 -
Flink实战: 窗口TopN分析与实现
TopN 的需求场景不管是在离线计算还是实时计算都是比较常见的,例如电商中计算热门销售商品、广告计算中点击数前N的广告、搜索中计算搜索次数前N的搜索词。topN又分为全局topN、分组topN, 比喻说热门销售商品可以直接按照各个商品的销售总额排序,也可以先按照地域分组然后对各个地域下各个商品的销售总额排序。本篇以热门销售商品为例,实时统计每10min内各个地域维度下销售额top10的商品。这个需求可以分解为以下几个步骤: 提取数据中订单时间为事件时间 按照区域+商品为维度,统计每个10原创 2020-11-25 14:36:40 · 891 阅读 · 1 评论 -
flink源码阅读---timer定时机制
1 注册定时器机制1.0 @Override public void registerProcessingTimeTimer(N namespace, long time) { InternalTimer<K, N> oldHead = processingTimeTimersQueue.peek(); if (processingTimeTimersQueue.add(new TimerHeapInternalTimer<>(time, (K) keyCont.原创 2020-11-23 00:32:53 · 445 阅读 · 0 评论 -
Flink水位线不触发问题
窗口计算时遇到好几次水位线不触发的情况,简单总结下。首先,介绍下Flink的事件时间(EventTime)和水位线(Watermarks)的概念。一、处理时间如果要构造一个实时的流式应用,或早或晚都会接触到EventTime这个概念。现实场景中也会遇到消息乱序到达,这里会介绍到为什么需要事件时间和如何去处理乱序到达的数据。ProcessingTime是Flink系统处理这条消息的时间,EventTime可以理解成是这条消息真实发生的时间。举个例子,创建一个SlidingWindow,窗口大小原创 2020-11-18 22:41:26 · 4407 阅读 · 2 评论 -
flink state ttl 清理逻辑(截止到flink1.8之前的逻辑)
在我们开发Flink应用时,许多有状态流应用程序的一个常见要求是自动清理应用程序状态以有效管理状态大小,或控制应用程序状态的访问时间。 TTL(Time To Live)功能在Flink 1.6.0中开始启动,并在Apache Flink中启用了应用程序状态清理和高效的状态大小管理。在这篇文章中,我们将讨论状态(State)的TTL并且给出用例。 此外,我们将展示如何使用和配置状态的TTL。状态的暂时性State只能在有限的时间内维持有两个主要原因。例如,假设一个Flink应用程序为每个用户提取原创 2020-11-18 13:26:35 · 877 阅读 · 0 评论 -
Rocksdb Compaction原理
概述 compaction主要包括两类:将内存中imutable 转储到磁盘上sst的过程称之为flush或者minor compaction;磁盘上的sst文件从低层向高层转储的过程称之为compaction或者是major compaction。对于myrocks来说,compaction过程都由后台线程触发,对于minor compaction和major compaction分别对应一组线程,通过参数rocksdb_max_background_flushes和rocksdb_max_b...原创 2020-11-16 18:04:31 · 870 阅读 · 0 评论 -
Flink DataStream Window 窗口函数 ReduceFunction、AggregateFunction、ProcessWindowFunction
Window Function在窗口触发后,负责对窗口内的元素进行计算。Window Function分为两类: 增量聚合和全量聚合。增量聚合: 窗口不维护原始数据,只维护中间结果,每次基于中间结果和增量数据进行聚合。如:ReduceFunction、AggregateFunction。 全量聚合: 窗口需要维护全部原始数据,窗口触发进行全量聚合。如:ProcessWindowFunction。本文总结增量聚合函数(ReduceFunction、AggregateFunction)和全量聚合函数(.原创 2020-08-07 16:46:53 · 970 阅读 · 0 评论 -
Flink Table API & SQL - 概念和通用API
Table API 和 SQL 集成在一个 API 中。这个 API 用作查询、输入和输出的表。本文档展示了带有 Table API 和 SQL 查询的程序的公共结构、如何注册表、如何查询表以及如何写入表。目录两个Planner之间的主要区别Table API and SQL的结构创建一个TableEnvironment在 Calalog 中注册表注册 Table注册 TableSource注册 TableSink注册外部Calalog查询表Table API原创 2020-07-03 18:58:09 · 477 阅读 · 0 评论 -
kafka两阶段提交、幂等以及flink结合
1 在checkpoint之间是一直pre_commit, 数据写入kafka broker, 同时在transaction协调器以及 消费者处理器之间写入本次事务的元信息;等到本次从source到sink之间的checkpoint全部完成,job manager完成checkpoint时,sink的producer才正式发出事务commit,这时候kafka之前写入broker的log才会对消费...原创 2020-03-16 21:06:12 · 3919 阅读 · 0 评论 -
flink维表join的几种方式(1)
维表join的几种方式一 将维表预加载到内存关联实现方式:定义一个类实现RichFlatMapFunction在open()方法中读取全部数据加载到内存中。优缺点:因为存在内存中,所以仅支持小数据量维表;因为open方法中读取,所以维表变化需要重启作业。二 通过Distributed Cache分发本地维度文件到task manager后加载到内存关联实现方式:通过env.r...原创 2020-03-14 22:28:23 · 4553 阅读 · 0 评论 -
sparkstreamming flink区别联系
一 spark1 rdd是通过装饰者模式形成的一系列函数的依赖关系,可分区、并行;其实不是数据而是计算,只不过通常还是叫数据集。2 窄依赖是指一个父rdd的partition做多被一个子rdd 的partition引用,独生子女。3 application 初始化一个sparkContext即生成一个Application。job 一个action算子会生成一个job。stag...原创 2020-03-08 00:08:00 · 441 阅读 · 0 评论 -
Flink架构
1 Flink 任务提交流程TaskManager是一个独立的jvm进程。每个task slot表示TaskManager拥有资源的一个固定大小的子集。假如一个TaskManager有三个slot,那么它会将其管理的内存分成三份给各个slot。slot就是运行在本进程下的独立资源集合,非线程概念,slot是cpu共享,内存隔离。一个slot并不代表一个线程,它里面并不一定只放一个tas...原创 2020-02-18 21:25:13 · 633 阅读 · 0 评论 -
flink随笔
1 map 或者source时继承对应的rich function,在其中的open方法中建立连接,对应的close方法中关闭连接。2 window必须对应keyedstream,也就是说必须在keyby之后。之后在对应相应的增量函数比如ReduceFunction, AggregateFunction, FoldFunction 或 ProcessWindowFunction。前两个函数执行...原创 2020-01-12 16:51:04 · 335 阅读 · 0 评论 -
flink--state状态管理
前提:1 flink state分为三种,1)operator state是跟算子关联的 2)keyed state是跟key stream关联的 3)broadcast state, 分为批Set的广播状态和流stream的流合并,一个广播流,一个事实流。当Flink左右从checkpoint恢复,或者从savepoint中重启的时候,就回涉及到状态的重新分配,尤其是当并行度发生改变的时...原创 2019-12-29 15:31:22 · 1418 阅读 · 0 评论 -
flink--richSink多线程处理问题以及如何保证不丢数据
笔者线上有一个 Flink 任务消费 Kafka 数据,将数据转换后,在 Flink 的 Sink 算子内部调用第三方 api 将数据上报到第三方的数据分析平台。这里使用批量同步 api,即:每 50 条数据请求一次第三方接口,可以通过批量 api 来提高请求效率。由于调用的外网接口,所以每次调用 api 比较耗时。假如批次大小为 50,且请求接口的平均响应时间为 50ms,使用同步 api,因此...原创 2019-12-25 21:24:01 · 3693 阅读 · 5 评论