首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
火火99
东南大学 大数据开发工程师
发布于江苏
关注
已关注
取消关注
@三石大数据:
BitMap在数仓领域的应用【面试加分项】
推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线 很多人问我:三石兄,简历没什么亮点怎么办,模型优化除了知道mapjoin,其他啥都不知道,那么这篇文章就可以成为你在面试过程中跟面试官谈论的一个亮点!!!1.背景需求:统计8月每种商品类别的购买人数select mer_type, count(distinct uid)from t -- 表t在100G左右where dt between '20230801' and '20230831'group by mer_type背景:这个任务跑了2h仍未跑出结果,就是因为count distinct在大数据量的情况下,性能巨差,于是想要使用bitmap来对其进行优化!2.技术原理2.1 BitMap2.1.1 定义BitMap的基本原理就是用一个bit来标记元素是否存在,因为仅用1个bit来存储一个数据,所以可以大大的节省空间;假设要使用BitMap来存储(1,5,1)这几个数字,如何存储呢?01234567010001002.1.2 使用场景海量数据量下求不重复的整数的个数2.1.3 代码实现以下代码可以直接运行class Bitmap: def __init__(self, size): self.size = size self.bitmap = [0] * ((size + 31) // 32) def set(self, num): index = num // 32 offset = num % 32 self.bitmap[index] |= (1 << offset) def test(self, num): index = num // 32 offset = num % 32 return (self.bitmap[index] & (1 << offset)) != 0def remove_dup(nums): bitmap = Bitmap(len(nums)) res = [] for num in nums: if not bitmap.test(num): bitmap.set(num) res.append(num) return res # 测试nums = [1,2,3,4,1,3]res = remove_dup(nums)print(res) # [1,2,3,4]2.2 RoaringBitMap2.2.1 BitMap的问题不管业务中实际的元素基数有多少,它占用的内存空间都恒定不变数据越稀疏,空间浪费越严重2.2.2 定义将数据的前半部分,即216(这里为高16位)部分作为桶的编号,将分为216=65536个桶,RBM中将这些小桶叫做container存储数据时,按照数据的高16位做为container的编号去找对应的container(找不到就创建对应的container),再将低16位放入该container中所以一个RBM是很多container的集合2.2.3 代码实现import pyroaringdef remove_dup(nums): bitmap = pyroaring.BitMap() res = [] for num in nums: if num not in bitmap: bitmap.add(num) res.append(num)# 测试nums = [1,2,3,4,1,3]res = remove_dup(nums)print(res) # [1,2,3,4]3.案例分析需求:统计8月每种商品类别的购买人数3.1 定义UDF函数import pyroaringfrom pyhive import hivedef remove_dup(nums): bitmap = pyroaring.BitMap() res = [] for num in nums: if num not in bitmap: bitmap.add(num) res.append(num) return len(res)3.2 创建UDF函数CREATE FUNCTION remove_dup(nums array) RETURNS intAS 'SELECT remove_dup(nums) FROM bitmap.py' LANGUAGE PYTHON;3.3 使用UDF函数select mer_type, remove_dup(collect_list(uid))from t -- 表t在100G左右where dt between '20230801' and '20230831'group by mer_type
点赞 8
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
今天 21:49
门头沟学院 golang
简历项目怎么选择
背景:一段较水大厂实习(写cpp的,比较底层,实际上没干什么活)+9本秋招有点凄凉,现在沉淀春招。秋招时我的简历布局是实习+一个微服务项目,但是我的理解不够透彻,并且项目亮点不多,面试表现不好。还有一版简历采用了一个轮子项目,用go语言实现了一个简单的redis,但面试时面试官兴趣不太大。最近在学习agent开发,考虑把春招简历布局改为:传统java微服务项目+个人agent项目。现在的疑问:一个spring微服务项目是不是有点老掉牙,而且容易被拷打;有点想加上之前做的轮子项目,但三个个人项目在简历上有点满;现在agent框架五花八门,我在学习的agent框架有langchain和字节的ein...
简历中的项目经历要怎么写
点赞
评论
收藏
分享
01-22 08:50
University of Southern California C++
柠檬微趣 Unity3D客户端 笔试
第一题LC 556第二题LC 1003第三题实现正则表达式匹配,含.*?第四题纯纯出题人不想要🐎了,链表稳定排序本来也还行,但是ACM模式,还强迫你用它的hpp接口,神金吧,请问贵司是不是很看重顶着大红波浪线写代码的能力啊😅,调试还难的要死,还是双向链表,还不暴露prev和next只暴露getter和setter,可能我还漏了什么写在犄角旮旯里的条件总之1分没拿不出意外的拿到了拒信,拒信极其敷衍。这公司谁爱去谁去吧,从笔试就开始服从性测试,卡笔试的公司都是**
年老无为:
笔试直接启动科技
查看4道真题和解析
点赞
评论
收藏
分享
01-16 09:30
北京理工大学 硬件开发
不懂就问,这是同一个人吗
Cl_Wg:
看牛客匿名贴容易抑郁
,白菜就是我的天花板
点赞
评论
收藏
分享
01-26 23:56
门头沟学院 C++
为什么有人“零实习”也能收割大厂SP?
校招时有一种很普遍的焦虑:“没有大厂实习经历,是不是就废了?”但在实际的秋招战场上,大家总能看到一些“异类”:简历上没有任何实习大厂的Logo,甚至连中小厂的实习都没有,却依然能拿下头部大厂的SP甚至SSP。这并不是玄学,也不是幸存者偏差,这背后的核心逻辑其实是“核心竞争力的等价置换”。HR和面试官本质上是在估算你的“未来产出能力”,而实习经历只是证明这种能力的凭证之一,并非唯一。一、 学术能力的“降维打击”对于算法岗而言,“顶级实验室经历” > “普通大厂打杂实习”。很多零实习的大佬,其实是在学校里把实验室当成了公司。 手握一篇CVPR/ICCV/AAAI/这些顶级paper,其含金量...
为什么有人零实习也能进大...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
牛客吐槽大会 | 有槽不吐,留着过年?吐完领现金红包,痛快!
2139
2
...
J人永远闲不下来于是去提前实习
1936
3
...
拥抱AI,程序员的最后出路
1859
4
...
mentor视角下的优秀实习生
1717
5
...
真正会被取代的,是你心里面的幻觉
1617
6
...
努力挣钱的意义具象化了
1368
7
...
大厂提前实习对AI开发的新感悟
1301
8
...
马斯克最新炸裂采访,AI会带走一半工作岗位,普通人将何去何从?
1259
9
...
去独角兽做龙头还是去大厂做凤尾
1202
10
...
我身材再曼妙,也没有我的工资好笑!
1177
创作者周榜
更多
正在热议
更多
#
牛客吐槽大会
#
2780次浏览
62人参与
#
机械人你知道哪些单休企业
#
83062次浏览
414人参与
#
今年春招是金一银二嘛?
#
8068次浏览
108人参与
#
参加完秋招的机械人,还参加春招吗?
#
103634次浏览
684人参与
#
1月小结:你过的开心吗?
#
1834次浏览
51人参与
#
抛开难度不谈,你最想去哪家公司?
#
4265次浏览
109人参与
#
为什么有人零实习也能进大厂?
#
4961次浏览
119人参与
#
机械人春招想让哪家公司来捞你?
#
379237次浏览
3140人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
8208次浏览
197人参与
#
AI求职实录
#
3454次浏览
101人参与
#
当你问AI“你会取代我的工作吗”,它说_?
#
3653次浏览
133人参与
#
赚钱的意义在这一刻具象化
#
3911次浏览
93人参与
#
没关系,至少我的__很曼妙
#
3672次浏览
65人参与
#
你的第一家实习公司是什么档次?
#
4162次浏览
70人参与
#
你的landing期是如何度过的?
#
8578次浏览
163人参与
#
除了Java,最推荐学什么技术?
#
5637次浏览
143人参与
#
一人一道大厂面试题
#
114091次浏览
1263人参与
#
你觉得什么岗位会被AI替代
#
36767次浏览
255人参与
#
你在职场上见过哪些“水货”同事
#
30734次浏览
167人参与
#
设计人如何选offer
#
187116次浏览
864人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务