RoaringBitMap在ClickHouse和Spark之间的实践-解决数据仓库预计算多维分析问题 前面在中说了一下Spark计算在多维分析场景中的弊端,多维度分析会导致数据量指数级膨胀,搭配上去重计算字段越多,膨胀倍数也是线性增长,通过BitMap这个案例也更加让我们明白了,什么是数据倾斜,从根本来讲,并不仅仅是数据量的问题,而是倾斜Task在进行数据IO和数据计算的时候耗费过长时间,我理解为下面三种情况。
Spark多维分析去重计数场景优化案例【BitMap精确去重的应用与踩坑】 场景前几天遇到一个任务,从前也没太注意过这个任务,但是经常破9点了,执行时长正常也就2个小时。看逻辑并不复杂,基本是几段SQL的JOIN操作,其中一个最耗时间的就是要根据底表数据Lateral view explode(array(字段, ‘all’)),一共lateral了4个字段,相当于数据量要扩大16倍。并且可怕的场景,lateral view之后还对11个字段进行了去重。select a22 as a, b22 as b, c22 as c, d22 as
【Flink】实时归因场景踩坑 背景前几天思考了一个问题,在很多业务场景下,需要关注流量的来源或是某个业务哪个入口的流量最大,带来的效益最多,那么就涉及到流量的归因了。比如说,我是一个bilibili up主,那么我想知道我的某个视频到底是首页推荐的流量比较多,还是用户搜索带来的比较多。我觉得得分为两种情况应用埋点质量非常差的情况下,那么在一些APP或者H5发展之初,是不会太去注重埋点的质量,当流量密码时代到来了,才发现这是一个风口,埋点标准化改造就是一个必不可少的环节。那么在改造之前,就只能靠数据自己去归因,即按照时间窗口,根据用
关于hive on spark的distribute by和group by使用以及小文件合并问题 问题导言最近在使用hive时,发现一些任务的因为使用mapreduce的缘故,跑的太慢了,才几十个G的数据就经常跑一个多小时,于是有了切换spark的想法。但是刚刚切换了spark,第二天发现跑出来的数据文件数大大增加,而且每个文件都非常小,导致下游spark任务为了每个小文件都启动一个task,申请资源对于spark来说是非常消耗资源的,任务又大大延迟了。查了下关于spark合并小文件,目前有几个参数会提供参考。输入端set mapred.max.split.size=256000000;设
算法基础-十大排序算法及其优化(文末有抽奖福利哦) 算法基础-十大排序算法及其优化算法基础-十大排序算法及其优化[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kw1LA5Q4-1607527572080)(/uploads/upload_a0c557489af8d3a0355d51f4e5542e9c.png)]冒泡排序动图演示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwEmwSUV-1607527572082)(/uploads/upload_684311d14d127a8
Hive系列-巧用开窗函数解决分组Top-K问题 最近遇到一个需求,要将数据分组,然后取每组最新的数据,刚开始各种join操作,都很繁杂,对于大数据量来说,实为不妥,计算总是超过了300多秒。于是干脆直接用了开窗select t.field1,field2,field3,field4 from( select field1,field2,field3,field4,rank() over(partition by field1,field2 order by create_time desc) as ranks
分布式系列-从无到有实现一个RPC框架 Rpc框架深入实现前期提要Demo1:简易版RPC框架-无注册中心Demo1模型Demo1:服务接口Demo1:服务接口实现Demo1:RpcRequestDemo1:RpcServer和ProcessHandlerDemo1:RpcClientProxy客户端动态代理生成代理对象Demo1:TcpTransportDemo1测试:服务器发布服务Demo1测试:客户端发送数据前期提要RPC即远...
设计模式怎么玩-代理模式 先来看看几个场景,比如刷网课,我们都要自己刷对吧,一节节看,还有单元测试啥的,浪费时间又学不到自己感兴趣的东西,或者玩游戏,需要升级,但是又常常充满罪恶感,可惜自己没有好好学习。那我们用代码表示一下就是这样子。一个抽象主题接口,用来定义我们要做的事情的一个抽象接口:package com.ongbo.ProxyPattern;/** * 抽象主题接口角色 * */public int...
Hive系列-文件存储格式 TextFile默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。源文件可以直接通过hadoop fs -cat 查看Sequence一种Hadoop API提供的二进制文件,使用方便、可分割、可压缩等特点。SEQUENCEFILE将数据以<key,value>的形式序列化到文件中。RC比如select a from tablelt...
Hive系列-in与left semi join select s_id from score where c_id in(select c_id from score where s_id='01')group by s_id;select b.s_idfrom score b join score c on b.c_id=c.c_id and c.s_id='01' group by b.s_id;select s_idfr...
Hadoop系列 hadoop一直处于Safe Mode 之前在docker重新搭建了hadoop,过了一段时间重新使用的时候,发现高可用的两个NameNode一直都是StandBy,然后强制一个hadoop dfsadmin -safemode leave退出Safe Mode。结果呢,发现竟然退出不了。于是查看namenode日志,发现如下错误20/04/27 03:25:12 WARN namenode.NameNodeResourceCheck...
Flink SQL系列-在流数据Table中去执行Join 先来看看对比一下以前的join,如果对于普通的关系型数据库,我们很容易就想到join应该怎么做的,先来两个场景。场景一加入要计算某天对于第7天的留存率,那么对于传统关系型数据库来说,我们只需要计算出留存用户,然后和当天的用户活跃数去做个比值就OK了。insert into retention_userselect a.id,b.idfrom a left join b on a.id =...
Flink SQL系列 关于Stream中的Dynamic Tables 我们以前使用的关系型数据库,比如mysql这种,都是统一个静态表,供我们查询,不管我们有多少数据,最好低于百万级别,都可以对某个表的所有数据进行统一操作,但是这仅仅就是一个静态表而已,也就是说,你的一次操作就会让数据编程另一种状态,比如你在中午表的状态是A状态,到了晚上你修改了一条数据,那么现在就变成了B状态了。我们在某个时间点去看,因为有这么大的时间跨度,就是一种静态表,而且它里面的数据涵盖的时...
Flink SQL系列:Table API使用 下面有两种API,分别是Apache社区的原生Flink API,还有一种是经过阿里优化过的一种APi,叫做Blink,两种API对于Batch和Stream有一些区别1:Blink对于“批”表会当做“流”表处理,所以“批”表和Dataset之间是不可以转换的,而DataSet回当做DataStream程序去处理,而DataStream和“流”表之间可以相互转换的。package flin...
2020春招笔试+面经(陆续更新) 腾讯这个岗位没有想要的,就胡乱投了个后台开发。其实我根本不会后台开发,后台开发有好久没搞了。投了差不多一个星期,就约了面试,面试官挺好的,聊东西也聊了很久,这次没出算法题。1:介绍自己2:谈谈你的项目:讲了差不多半个小时为什么用到Hbase你怎么处理你的数据的,怎么保证一致性布隆过滤器uv pv计算方式3:flink的内存管理4:kafka的架构,生产消费原理,怎么保证不重...
Hive:Hive的开窗函数 不说了,直接使用别人的表来做一个测试表吧-- 建表create table student_scores(id int,studentId int,language int,math int,english int,classId string,departmentId string);-- 写入数据insert into table student_scores valu...