首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-25 13:56
SHEIN_HR(准入职员工)
shein内推,shein内推码
实习了这么多公司下来,对SHEIN的感受就是 希音的培养体系非常系统和全面 有非常丰富的资源可以学习—— 新人入职时会召开新人会议,介绍公司制度和福利 有专门针对这个岗位新人的学习清单 部门团队介绍和业务梳理 帮助我快速了解业务框架和具体工作方法 还有SHEIN学院里的职场软技能提升课程和英语课程不可谓不丰富了 但是学到多少,就看你的主动性和学习能力了 扁平化组织让我有更多机会直接接触到mentor和leader 每天都能one on one沟通 部门全员E人的氛围让初来乍到的原本e人的我也变成了i人[呃R] 但是后面也很好地融入啦 团队伙伴都说舍不得我离开…mentor说感谢我为团队带来了新...
SHEIN希音公司福利 280人发布
点赞
评论
收藏
分享
12-22 17:44
美团_前端开发实习生(实习员工)
金山秋招二面(过)
实习内容具体介绍国际化每次的翻译是怎么对上的中文绑定字符串的方式,key的命名模版字符串的处理语言判断规则以及持久化脚手架国际化处理tcp三次握手高并发的情况下每个链接还是三次握手,性能浪费,怎么去优化反问
查看7道真题和解析
点赞
评论
收藏
分享
11-21 15:57
中山大学 Java
27想找日常实习 求牛爷爷们拷打
27届找不到日常实习,不是已读不回就是简历挂,简历的项目是点评和星球的rpc,项目描述是照搬星球和网上的,有需要修改的吗
erer__:
感觉面试官比我更熟悉点评项目😂还教我应该怎么说
点赞
评论
收藏
分享
12-15 18:28
广东理工学院 销售技术工程师
二本现在还能找到大厂实习嘛
点赞
评论
收藏
分享
12-23 22:04
深信服_技术服务工程师(准入职员工)
深信服内推,深信服内推码
从5月7号入职到现在已经过了一周啦,记录一下最真实的感受…… 公司的伙食还是很不错的,每天餐补38元,早中晚各8-15-15,每天下午还有固定的下午茶,随机刷新糕点饮品甚至还有KFC。 午休时间也很完美,十二点到十四点(包括吃饭时间),应该算行业内中上水平了。虽然一周会有那么几天要上班到晚上八点半,但好像又没有觉得抗拒。 在这里每天都能学到很多很多在学校中接触不到的知识,能直接接触一线开发环境,在项目中将知识结合实践,对于我这个双非本实习生来说还算是很有价值的。组内同事跟导师也非常友好,虽然我没什么开发经验有时会问一些很低级的问题,写代码时也偶尔犯一些低级错误。今天15号是前公司发工资的日子,...
深信服公司福利 832人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
工作半年后更确定:我们依然不欠优绩主义什么
4427
2
...
#牛客2025仙途报告#居然是五颗星
2061
3
...
牛客2025年终报告重磅上线——揭晓你的年度修炼成就!
1926
4
...
【2025-年终总结】25届毕业生果果牛这一年~
1792
5
...
我建了一个分享实习业务的仓库,欢迎大家贡献哦
1712
6
...
牛客年终报告,今日道爷我成了
1684
7
...
一个程序员的自救书|从酒吧陪玩DM到上岸大厂
1531
8
...
腾讯 微信支付一面面经
1257
9
...
关于我在某小厂实习半个月后在圣诞节当天被开除
1236
10
...
28第二次面试
1234
创作者周榜
更多
正在热议
更多
#
牛客2025仙途报告
#
10267次浏览
217人参与
#
我们是不是被“优绩主义”绑架了?
#
1093次浏览
53人参与
#
2025年终总结
#
189060次浏览
3185人参与
#
找工作,行业重要还是岗位重要?
#
86706次浏览
1734人参与
#
你面试体验感最差/最好的公司
#
26970次浏览
450人参与
#
今年你最想重开的一场面试是?
#
9893次浏览
117人参与
#
礼物开箱Plog
#
2764次浏览
99人参与
#
为了秋招你都做了哪些准备?
#
29445次浏览
524人参与
#
一人说一个提前实习的好处
#
19148次浏览
286人参与
#
秋招落幕,你是He or Be
#
20441次浏览
360人参与
#
机械人晒出你的简历
#
147724次浏览
881人参与
#
重来一次,你会对开始求职的自己说
#
9145次浏览
233人参与
#
工作中听到最受打击的一句话
#
11282次浏览
168人参与
#
实习没事做是福还是祸?
#
21891次浏览
326人参与
#
工作两年,想和老板谈涨薪怎么说
#
39049次浏览
176人参与
#
离家近房租贵VS离家远但房租低,怎么选
#
13898次浏览
130人参与
#
25届暑期实习
#
1039071次浏览
20589人参与
#
实习的内耗时刻
#
212506次浏览
1577人参与
#
拿到offer之后,可以做些什么
#
81289次浏览
430人参与
#
这些公司卡简历很严格
#
82594次浏览
375人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务