自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Spark join策略

spark默认的,两张大表进行join时使用。

2024-10-03 21:33:14 347

原创 生产实践中的经典算法-BitMap

是一个位图,用二进制来记录数据状态,本质就是字节表示法。一个int占4个字节,32bit。用下标表示数值,下标索引由0~31。比如想存1,2,4,6。在字节数组中下标对应1,2,4,6位置的元素记为,其余为0。因为都是在A[0]中,A[0]=1+4+16+64=86。因为一个字节数组只能存32位,比如A[0]存0~31,32就存在A[1]中。比如存32,34,36。后续数字以此类推。那么如何确定给定的一个数M,应该存在哪个位置呢?因为每个数组可以存32个,所以首先M/32得到应该存在数组的下标。

2024-10-03 19:50:34 597

原创 Spark shuffle和Hadoop shuffle区别通俗易懂

普通机制会将计算结果写入到一个默认的内存结构(默认是5M),每次写入都会进行一个阈值的判断,是否写满了。合并机制是让多个task共享一个buffer,这样会减少落盘的文件,会产生reduce个数 * core个数的文件。Map端Shuffle会将数据写入到环形缓冲区,默认大小是100M,底层是一个数组,一半存储数据,另一半存储元数据,当达到80%的时候进行反向溢写,溢写之前要根据key的hashcode值对reduce task的个数取模进行分区快排,然后溢写到本地磁盘中。当内存满了之后会写到本地磁盘。

2024-10-02 09:39:55 453

原创 数据库 面试题(持续更新)

a. 普通索引:一个索引只能包含一个列,一个表中可以有多个普通索引b. 唯一索引:索引列的值必须唯一,但润许有空值,且只允许有一个空值c. 主键索引:一个表只能有一个主键索引,并且不能为空d. 复合索引:一个索引可以包含多个列。

2024-09-30 10:47:24 235

原创 Flink 面试题 (持续更新)

1. 计算速度不同,flink是真正的实时计算框架,Spark Streaming是一个准实时微批次的计算框架2. 架构不同,Spark Streaming的角色是Driver、Executor,Flink是JobManager和TaskManager3. 时间机制不同,Spark Streaming只支持处理时间,而Flink有三种时间:事件时间、注入时间和处理时间,并且还有水位线机制处理迟到数据。

2024-09-30 09:14:08 1546

原创 Flink 容错机制

Barrier对齐: 一个task收到 所有上游 同一个编号的barrier之后,才会对自己的本地状态做备份①:精准一次:在对齐过程中,barrier后面的数据 阻塞等待,不会越过barrier②:至少一次:在对齐过程中,先到的barrier,其后面的数据不阻塞,继续计算非Barrier对齐:一个Task收到第一个barrier后,就开始执行备份,能保证精准一次。细节:①:先到的barrier 将本地状态备份,同时后面的数据接着计算输出。

2024-09-29 18:51:12 744

原创 Spark 数据倾斜问题 — 通俗易懂

原因:数据本身不均,分组之后导致不均匀或者filter过后分区间数据量不一致,造成某些key的value数据量远大于其他key的,导致绝大多数的任务执行的很快,只有少部分的任务执行的很慢甚至执行失败。

2024-09-29 08:52:43 558

原创 Spark调优 — 个人小总结

从三方面考虑。

2024-09-29 08:31:43 446

原创 Flink -- 状态管理

Flink中算子任务可以分为有状态和无状态。无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果。比如map、flatmap有状态的算子,除了当前数据之外,还需要一些其他的数据来得到计算结果。这些其他数据,就是所谓的状态。比如聚合算子、窗口算子都属于有状态算子。

2024-09-28 09:01:43 608

原创 flink -- 处理函数

ProcessFunction底层继承了AbstractRichFunction,有两个泛型表示输入和输出。其中有一个抽象方法processElement必须要实现,另一个非抽象方法onTimer1) 抽象方法processElement对于流中的每个元素都会调用一次,参数包括三个,输入的数据值value、上下文ctx、收集器collector out,这个方法没有返回值,处理之后的输出数据是通过收集器out定义的2) 非抽象方法onTimer类似于闹钟,只有在注册好的定时器触发时才会调用。

2024-09-27 21:21:31 1080

原创 flink -- 合流

根据key进行合流相当于关系数据库中表的join操作。flink中两条流的connect操作,就可以通过keyby指定键进行分组后合并,实现类似sql的join。

2024-09-27 19:46:38 331

原创 Flink 水位线(Watermark)个人总结

在Flink中,用于衡量事件时间进展的标记,被称为水位线。可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点。主要内容就是一个时间戳,用来指示当前的事件时间自身理解:本质上就是一个时间戳,表示比这个时间早的事件已经全部到达。并且在数据乱序的情况下,通过水位线可以判断出迟到的数据。

2024-09-27 17:25:41 2815

原创 Flink的时间语义 -- 通俗介绍(包含零点漂移问题)

前一天23:59:59发送过来的数据,但是由于延迟发送到了下一天的分区,这条数据就具有偏差(离线数仓经典问题)。对于flink,具有事件时间,这个时间点是比较重要的,是保证计算结果准确的重要因素。喝牛奶这个时间为处理时间。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间判断的基础。"时间" 对于flink来说是非常重要的,大致可以分成两大类:事件时间和处理时间(flink的时间语义):一个数据产生的事件(比如2.30分下单操作,事件时间就为2.30分)

2024-09-27 11:09:04 203

原创 Flink 窗口最全汇总

将要计算的数据限制一个范围,统计一个范围内的数据。将无界的数据切割成有届的数据。

2024-09-27 10:49:54 3202 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除