首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
许1诺
哈尔滨华德学院 大数据开发工程师
发布于四川
关注
已关注
取消关注
@三石大数据:
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-28 11:04
钱大妈_应用研发部_前端开发工程师
让你包装,不是让你造假!!
✅ 包装 ≠ 造假,而是把真实的经历“讲得更有价值、更吸引人”。 就像一件好衣服需要合适的搭配和展示方式,你的经历也需要用专业语言+结构化表达让它闪闪发光✨ 下面我来给你一套「有理有据、安全合规、效果显著」的简历包装方法论👇 🌟 一、包装的核心原则:STAR + CAR + 成果量化 1. STAR 法则(讲清楚一件事) Situation:背景(你在什么团队/项目中?) Task:任务(你要解决什么问题?) Action:行动(你具体做了什么?用了什么技能?) Result:结果(带来了什么可衡量的影响?) ✅ 示例: 在某电商平台暑期实习期间,负责用户复购率提升项目(S),需分...
简历上的经历如何包装
点赞
评论
收藏
分享
07-31 17:20
四川农业大学 产品经理
在大厂实习后,我失去了打游戏自由
回想实习的这一个月,生活里全是工作之前在中厂实习过一段时间,到点就下班,并没有认识到工作对于生活和自我的剥夺进入大厂后,一边工作一边汲取知识为毕业答辩做准备,上班时间除过工作就是知识点,感觉排的满满当当……更别说日常通勤会占据将近两个半小时自由时间。今天比较崩溃的原因就是,一款期待很久的游戏上线,发现自己五天下来玩的时间甚至不足五个小时我真的是游戏爱好者,但工作与通勤的忙碌让我不得不看向现实……个人有个人的难处,我现在看着游戏但没时间玩简直就像是疲惫的丈夫面对貌美的妻子啊累🥱
工作中哪个瞬间让你想离职
点赞
评论
收藏
分享
07-02 19:30
已编辑
University of Malaya Java
这简历有什么致命问题么,问什么找日常实习都秒挂,求大佬指点
本人现在就读于大二下,下学期升入大三,按照课程大纲要求实习6个月,6月19号开始投递大厂,腾讯,字节,京东等全部没有消息,我想优先投golang岗位,其次java,28号开始投递中小厂,全部都挂
投递京东等公司10个岗位
点赞
评论
收藏
分享
07-26 07:41
门头沟学院 C++
互联网大厂
大厂都在这了 超一线大厂都不太卡 美团和快手也不是特别卡 剩下的交给牛友锐评了
风评不好的公司,你会去吗...
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-29 11:57
浪潮提前批挂
投递浪潮等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
2.1W
2
...
百度提前批,三面被推迟一周,喜提秋招第一凉
3733
3
...
虾皮后端一面(已挂)
3701
4
...
虾皮秋招一面
3701
5
...
干活最少的实习生因为长得漂亮转正了
3001
6
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
3001
7
...
7.30滴滴提前批一面凉经
2909
8
...
百度提前批 三面
2835
9
...
QQ提前批一面凉经
2522
10
...
7.30百度提前批一面
2281
创作者周榜
更多
正在热议
更多
#
你遇到最难的面试题目是_
#
15046次浏览
193人参与
#
反问环节如何提问
#
95492次浏览
1951人参与
#
中兴秋招
#
203627次浏览
2280人参与
#
简历上的经历如何包装
#
24278次浏览
728人参与
#
如何看待offer收割机的行为
#
815411次浏览
6088人参与
#
你最讨厌面试问你什么?
#
25007次浏览
282人参与
#
秋招最大的收获是什么?
#
38614次浏览
323人参与
#
我的实习收获
#
90876次浏览
1038人参与
#
26届的你,投了哪些公司?
#
36933次浏览
428人参与
#
滴滴求职进展汇总
#
233322次浏览
2116人参与
#
作业帮求职进展汇总
#
56998次浏览
376人参与
#
初创公司值得加入吗?
#
27308次浏览
194人参与
#
我对___祛魅了
#
43368次浏览
410人参与
#
数字马力求职进展汇总
#
184446次浏览
1500人参与
#
你跟室友的关系怎么样?
#
6022次浏览
94人参与
#
什么样的背景能拿SSP?
#
31357次浏览
201人参与
#
工作中哪个瞬间让你想离职
#
60606次浏览
545人参与
#
和同事相处最忌讳的是__
#
21107次浏览
217人参与
#
去年你投递实习了吗?
#
22884次浏览
331人参与
#
如何快速融入团队?
#
14848次浏览
182人参与
#
机械人的金三校招总结
#
36201次浏览
461人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务