- 博客(148)
- 收藏
- 关注
原创 HiveSQL刷题
现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。
2023-08-24 09:10:56
1362
原创 HDFS-块丢失和块损坏
去看看有没有副本,有副本的话,NN会自动同步数据,如果没有自动同步,重启HDFS。有可能是使用的hive的外部表,元数据没有,可以使用命令修复分区。
2023-08-17 14:07:43
631
原创 SQL之求股票的波峰和波谷--HiveSQL面试题33【今日头条】
参考:SQL之求股票的波峰和波谷--HiveSQL面试题33【今日头条】_sql 波峰波谷_莫叫石榴姐的博客-CSDN博客
2023-08-14 09:18:54
224
原创 实时指标-1日留存率
2个DWD层 登录→kafka 注册→kafka 1个DWS 弄2条流,从kafka读取数据 将昨日注册数据存到状态中,TTL为2天,存到map状态中,key为注册日期,value为set,存储注册的uid 将登录流和注册流进行连接 来一条登录数据,去注册状态中get昨天的日期,然后判断登录的uid在不在set中,如果在,说明昨天注册的,那么留存数加1 get昨天的日期,取set的size,就是昨日注册数 开一个10分钟的窗口,每10分钟将留存数和昨日注册数存到Doris的
2023-08-12 22:16:17
531
原创 flink优化
大状态调优:在我们的项目中,在做新老访客修复时,我们将每个mid的访问时间都存到了状态里面,在做回流用户数时,我们将每个用户的登录时间都存到了状态里面,导致了大状态问题,由于hashmap状态后端会将数据存储到内存,所以就会出现内存不够的情况。我们的解决办法就是将状态后端改成了rocksdb,并且开启增量检查点和本地恢复去进行调优。
2023-08-12 16:59:15
913
原创 flink-对齐和不对齐,精准一次和至少一次
精准一次怎么保证?可以设置为以下2个 对齐 当有一个barrier比较快时,输入缓冲区阻塞,当另外一个barrier到来时,才进行备份,所以数据不会重复。 优点:不会造成数据重复 缺点:会造成数据积压,OOM 不对齐 当有一个barrier到来时,直接将barrier置到最后,然后将所有缓冲区的数据和状态进行备份,然后将kafka提交,然后将慢的barrier也置到最后,将所有缓冲区的数据和状态进行备份,然后将kafka提交。 优点:加快了ck 缺点:由于备份了大
2023-08-12 15:23:44
1755
原创 Flink-间隔联结
间隔联结只支持事件时间 间隔联结如果遇到迟到数据,则会关联不上,比如来了一个5秒的数据,它可以关联前2秒的数据,后3秒的数据,就是可以关联3秒到8秒的数据,然后又来了一个6秒的数据,可以关联4秒到9秒的数据,那么3秒的数据,就永远不会被关联到了,就可以删除了,然后又来了一个迟到数据,比如4秒的数据,可以关联2秒到7秒的数据,但是3秒的数据已经被删除了,所以就关联不上了。对于这种情况,解决办法就是,使用回撤流,比如leftjoin,leftjoin可以设置状态过期时间,这个时间是系统时间,比如我们设置过
2023-08-09 17:34:49
1018
原创 MySQL事务的底层实现原理
MVCC (MultiVersion Concurrency Control) 叫做多版本并发控制,InnoDB的 MVCC ,是通过在每行记录的后面保存两个隐藏的列来实现的,这两个列,一个保存了行的创建时间,一个保存了行的过期时间,当然存储的并不是实际的时间值,而是系统版本号,他的主要实现思想是通过数据多版本来做到读写分离。MVCC在mysql中的实现依赖的是undo log与read view,undo log 中记录的是某行数据的多个版本的数据。原子性,持久性,隔离性的目的也是为了保障数据的一致性!
2023-08-08 11:37:30
166
原创 Hbase-面试题
自动切分,默认情况下 2.0版本,第一次region的数据达到256M,会进行切分,以后就是每达到10G切分一次,切分完成后,会进行负载均衡,均衡到其他regionserver 预分区+自定义rowkey 可以理解为预切分 比如预分区,每个regionserver会有10个region,每个region都有startrow和endrow 生产上必须要用预分区+自定义rowkey 预分区好了之后,即使没有数据,也会新建10个region的空文件 以后存数据的时候,会均匀的存到每个re
2023-08-07 17:08:35
1047
2
原创 HBase-读流程
(6)先从写缓存中读取数据,如果没有就从读缓存中读取数据,如果没有就从磁盘中读取数据,并将读取的数据放到读缓存中。(4)向Meta表所在位置的RegionServer发起请求读取Meta表信息;(1)读取本地缓存中的Meta表信息;(第一次启动客户端为空)(2)向ZK发起读取Meta表所在位置的请求;(5)读取到Meta表信息并将其缓存在本地;(3)ZK正常返回Meta表所在位置;(7)给用户返回最大版本的数据。
2023-08-07 15:15:43
932
原创 HBase-写流程
(4)向Meta表所在位置的RegionServer发起请求读取Meta表信息;(7)先写WAL,再写MemStore,并向客户端返回写入数据成功。(1)读取本地缓存中的Meta表信息;(第一次启动客户端为空)写流程顺序正如API编写顺序,首先创建HBase的重量级连接。(2)向ZK发起读取Meta表所在位置的请求;(5)读取到Meta表信息并将其缓存在本地;(3)ZK正常返回Meta表所在位置;(6)向待写入表发起写数据请求;
2023-08-07 14:43:00
1184
原创 HBase-组成
HBase通过Zookeeper来做Master的高可用、记录RegionServer的部署信息、并且存储有meta表的位置信息。拆分合并Region的实际执行者,由Master监控,由regionServer执行。负责数据cell的处理,例如写入数据put,查询数据get等。
2023-08-07 14:16:50
1196
原创 kafka-事务
事务属性实现前提是幂等性,即在配置事务属性transaction id时,必须还得配置幂等性;但是幂等性是可以独立使用的,不需要依赖事务属性。
2023-08-05 17:23:02
1317
原创 Kafka-副本数量设置
ISR 机制的另外一个相关参数是, 可以在 broker 或者主题级别进行配置,代表 ISR 列表中至少要有几个可用副本。这里假设设置为 2,那么当可用副本数量小于该值时,就认为整个分区处于不可用状态。此时客户端再向分区写入数据时候就会抛出异常。
2023-08-05 14:47:10
4745
1
原创 【hive经典指标,离线数仓指标,ADS层指标分析】最近7日内连续3日下单用户数
1.ODS获取用户登录信息2.DIM3.DWD4.DWS5.ADS6.SQL。
2023-08-03 21:32:40
978
原创 Kafka-Broker工作流程
kafka集群在启动时,会将每个broker节点注册到zookeeper中,每个broker节点都有一个controller,哪个controller先在zookeeper中注册,哪个controller就负责监听brokers节点变化,当有分区的leader挂掉时,controller会监听到节点变化,然后去zookeeper中获取isr,选举新的leader,选举的规则是:在isr中存活为前提,按照AR中排在前面的优先。
2023-08-02 17:02:04
1248
原创 Kafka-消费者组消费流程
消费者向kafka集群发送消费请求,消费者客户端默认每次从kafka集群拉取50M数据,放到缓冲队列中,消费者从缓冲队列中每次拉取500条数据进行消费。
2023-08-02 16:00:46
1146
原创 离线数仓中,为什么用两个flume,一个kafka
实时数仓中,为什么没有零点漂移问题? 因为flink直接取的事件时间 用kafka是为了速度快,并且数据不丢,那为什么既用了kafkachannel,也用了kafka,而不只用kafkachannel呢? 因为需要削峰填谷 离线数仓中,为什么用两个flume,一个kafka,直接用taildirsource,kafkachannel,hdfssink不行吗? 不行 kafka可以削峰填谷 如果用kafkachannel,那么数据写到kafka,只剩event,没有header,无法
2023-08-02 14:34:54
2696
原创 SQL-非等值连接
id 月份 GMV。小明 1 50。小明 1 50。小明 1 50。结果:每个月份的累积汇总值。需求五:id 月份 GMV。2)不能使用开窗,非等值连接。
2023-08-02 14:24:01
142
原创 kafka-主题过多会有什么危害?
会造成分区过多,IO压力大 topic太多出现too many file,打开文件过多 partition过多在controller选举和controller重新选举partition leader的耗时会大大增加,造成kafka不可用的时间延长
2023-08-02 14:13:59
381
原创 Hive优化
分区,分桶避免全局扫描 列式存储,加快计算速度 采用压缩,减少磁盘IO 谓词下推,行列过滤(select *),列剪裁,CBO优化(对于计算成本的优化,比如join的顺序) 开启map-side 针对groupby,数据量大的可以提前预聚合 开启map-join 大表join小表场景 开启分桶join SMB 两张表必须是分桶表 分桶数量必须整数倍 分桶字段必须是关联字段 开启skew-join,如果检测到有key比较多的,那么单独开启一个mapjoin去计算,其他正常
2023-08-01 19:18:10
71
原创 Spark-任务怎么切分
(1)Application:初始化一个SparkContext即生成一个Application;(4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。(2)Job:一个Action算子就会生成一个Job;(3)Stage:Stage等于宽依赖的个数加1;
2023-08-01 18:57:06
401
原创 Spark-统一内存模型
其中存储内存和计算内存可以动态占用,当己方内存不足对方空余则可占用对方的内存,计算内存被存储内存占用后可强制收回,存储内存被计算内存占用后不可强制收回,只能等待释放。Spark的内存模型分为4部分,分别是存储内存,计算内存,其他内存,预留内存;
2023-08-01 16:31:04
353
原创 Spark-SortShuffle原理
每个Task会先把数据发送到缓冲区中,缓冲区满了会排序溢写到临时文件,等到Task计算完成之后,会把这些临时文件合并成一个大文件,和一个index文件,文件内容是有序的,等到所有的Task计算完成之后,启动ReduceTask,拉取属于自己分区的数据进行计算。最后在每个Task中,将所有的临时文件合并,这就是merge过程,此过程将所有临时文件读取出来,一次写入到最终文件。在溢写磁盘前,先根据key进行排序,排序过后的数据,会分批写入到磁盘文件中。:减少了小文件,不排序,效率高。在不需要排序的场景使用。
2023-08-01 16:17:45
348
原创 Spark提交流程
客户端通过脚本将任务提交到yarn执行,yarn启动APPMaster,APPMaster启动Driver线程,Driver负责初始化SparkContext并进行任务的切分和分配任务,交给Executor进行计算。
2023-08-01 16:00:15
324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅