首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-12 08:43
重庆移通学院 前端工程师
字节一面
一、字节跳动1、自我介绍2、React用得多还是Vue用得多?我之前在学校阶段用 Vue 比较多,因为很多课程项目是基于 Vue 做的。后来在实习以及之后的项目中主要使用的是 React,目前主要技术栈是 React + TypeScript。React 的函数式组件和 Hooks 体系让我在状态管理和逻辑复用方面感觉更灵活,所以现在用 React 会更多一些。3、React用的什么版本?React19有哪些新特性?我主要使用的是 React 18。React18比较重要的特性包括并发渲染、自动批处理、useTransition 等。React19新增的一些能力主要包括:Actions:简化表...
查看17道真题和解析
点赞
评论
收藏
分享
03-12 17:05
蚌埠坦克学院 嵌入式软件开发
特斯拉嵌入式一面 面经
最近在整理嵌入式校招同学的面试投稿,其中有一份来自特斯拉嵌入式岗位的一面记录。整体看下来,特斯拉的一面风格比较典型:先深挖项目,然后延伸到底层原理和工程细节。面试官不会只停留在简单的知识点上,而是会不断追问实现方式,比如任务是如何设计的、实时性如何保证、驱动是如何实现的、系统出现问题时如何排查等。从投稿来看,问题主要集中在几个方向:项目细节、RTOS机制、嵌入式基础、通信接口以及简单算法题。难度整体从基础到中等偏上,更看重候选人是否真正做过项目、是否理解系统设计。下面整理的是这次特斯拉嵌入式一面中涉及到的一些问题,仅保留题目,方便准备嵌入式岗位的同学参考。特斯拉嵌入式一面面试题先介绍一下你简历...
点赞
评论
收藏
分享
03-06 22:23
已编辑
门头沟学院 测试开发
忽然就收到了腾讯面试
忽然收到了面试邀请 有没有友友有面经分享 投了这么多 第一个面试机会
发面经攒人品
点赞
评论
收藏
分享
03-11 11:00
西安邮电大学 Java
27届暑期实习
ssob沟通和提交简历10:1正常吗,好多送达不回的,找个实习好累啊简历如下,求锐评
投了多少份简历才上岸
点赞
评论
收藏
分享
03-08 09:53
浙江大学 算法工程师
C++面试技巧分享(目前拿了多个大厂offer)
最近也到了春招了,想跟大家分享一些C++面试的经验,大家有什么经验分享都可以补充。一、面试前的准备1.1 知识体系梳理面试不是临时抱佛脚,而是系统性的准备。建议按照以下模块梳理:基础必备数据结构与算法(重中之重)C++语言特性(从C++98到C++17)操作系统原理(进程、线程、内存、IO)计算机网络(TCP/IP、HTTP/HTTPS)数据库原理(MySQL为主)进阶内容系统设计与架构分布式系统理论高并发、高可用设计性能优化实战开源项目源码阅读1.2 简历优化技巧简历是你的第一张名片,要让面试官一眼看到亮点。项目描述的STAR法则Situation:项目背景和规模Task:你的职责和目标Ac...
C++八股文全集
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
快手Java后端一面
6025
2
...
6个AI实操技巧,帮你在简历+面试中拉开差距
3797
3
...
腾讯暑期一面
3754
4
...
滴滴一面
3575
拼多多笔试
热聊中
5
...
滴滴一面面经
3301
6
...
百度日常一天速通一二面
2975
7
...
字节一面、二面(横向挂)
2741
8
...
美团笔试+ai面+米哈游笔试
2477
9
...
快手前端实习一面
2164
10
...
小红书一面(已挂)
2159
创作者周榜
更多
正在热议
更多
#
你感受到金三银四了嘛?
#
78453次浏览
656人参与
#
你上一次加班是什么时候?
#
137645次浏览
758人参与
#
虽然0面试,但今天___,夸夸自己
#
10038次浏览
187人参与
#
2025秋招体验点评
#
99886次浏览
753人参与
#
春招 / 实习投递,你最焦虑的一件事
#
56830次浏览
1097人参与
#
滴滴笔试
#
34616次浏览
192人参与
#
美团笔试
#
701219次浏览
4664人参与
#
AI岗位暴涨12倍,你会转AI赛道吗?
#
5899次浏览
114人参与
#
米哈游笔试
#
556010次浏览
1102人参与
#
金三银四,你的春招进行到哪个阶段了?
#
18770次浏览
255人参与
#
今天你投了哪些公司?
#
166314次浏览
2908人参与
#
27届实习投递记录
#
1094次浏览
24人参与
#
vivo笔试
#
13207次浏览
123人参与
#
小米编程考试
#
32108次浏览
151人参与
#
文科生还参加今年的春招吗
#
13778次浏览
100人参与
#
字节7000实习来了,你投了吗?
#
5096次浏览
25人参与
#
职场上哪些行为很加分?
#
337097次浏览
3719人参与
#
AI项目实战
#
7397次浏览
357人参与
#
你遇到过哪些神仙同事
#
133847次浏览
763人参与
#
实习学不到东西正常吗?
#
8633次浏览
181人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务