原创 | 一张图秒杀滴滴大数据场景题(已拿offer)

简介: 原创 | 一张图秒杀滴滴大数据场景题(已拿offer)

大家好,我是峰哥。

之前有同学在微信上问了我滴滴的一个大数据场景题,今天我们就聊聊解决这道题的思路。


image.png


在面试中,我们不仅要手写算法,还会碰到一些算法场景题,比如数据量太大,内存完全不够该如何处理,今天我们就结合两个具体问题来探讨一下。


问题一


A 文件有 50 亿条 URL,B 文件也有 50 亿条 URL,每条 URL 大小为 64B,在一台只有 4G 内存的机器上,怎么找出 A、B 中相同的 URL?


不用算都知道内存肯定不够,否则就不会这么问了。面试时,如果对自己的算数能力不够自信,那就直接说出思路,不用计算具体数值,免得尴尬。


针对这种大数据量的问题,通常要想到「分而治之」。为了方便讲解,我这里就先计算一下。


50 亿条 URL 文件的大小:50 * 10^8 * 64 Byte ≈ 32 * 10^10 Byte ≈ 320G

一图胜千言,点击图片即可放大查看。


image.png


借助 Hash 函数,依次扫描 A、B 两个文件,将 URL 分别存储到 1000 个小文件中,那么每个文件大约 300M,满足内存的需求,文件以 0-999 的数字结尾作为编号,下面说下具体过程。

首先遍历 A 文件,对每个 URL 取 hash(url)%1000 的值,该值就是 URL 要存储到小文件的编号,最终所有 URL 分别存储在 1000 个小文件中,文件名记成以下形式: a0、a1、…、a999。

再遍历 B 文件,用同样的方法将 B 文件的 URL 分别存储 b0、b1、…、b999 这 1000 个小文件中。

我们知道 Hash 的一个特点:相同的 key,hash 之后的 value 一定是相同的。所以,对于 A、B 文件中相同的 URL,Hash 之后,一定会存储到相同下标的文件中。

如果 Hash 函数设计合理,将数据均匀分散,每个文件大致 300M。

我们再读取相同下标的小文件到内存中,判断是否存在相同的 URL 即可。

是不是 so easy ?


这让我想起极客时间专栏中同样是内存不够的一个问题。


问题二


如何对 10G 的订单数据按照金额排序?


此时要借助桶排序的思想,订单金额一般是在某个范围内,跨度不会太大。先扫描一遍 10G 的订单数据,找出订单金额的范围,再根据范围进行切分,划分到不同的桶。


比如订单金额在 1 到 10万,切分到 100 个桶里,每个桶中保存的金额范围就是 1000,每个桶其实就是一个小文件,给文件编个号,比如 00 文件:1-1000 元,01 文件:1001-2000,以此类推。


假设订单金额比较均匀,那么每个文件大概 100M,每次读取一个文件进行排序即可。文件之间本来就按照金额划分,已经是有序的。最后将划分的小文件按照编号依次写入结果文件中,那么所有订单就按照金额排好序了。


再一图胜千言。


image.png


实际情况中,订单金额一般是分布不均匀的,此时针对较大的文件复用上面的方法,划分成更小的文件分别排好序,最后再统一汇总。


通过以上两个问题,我们发现大数据处理的重要思想是「分而治之」,下次碰到这类题目不妨从这个角度出发,即使不能吊打面试官,但也能回答个七七八八。


最后这位同学也不枉峰哥的细心指导,顺利拿下滴滴offer。


image.png






相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
5月前
|
分布式计算 资源调度 大数据
一图胜千言:大数据入门必备的16张数据流转图(建议收藏)
一图胜千言:大数据入门必备的16张数据流转图(建议收藏)
174 0
|
7月前
|
存储 分布式计算 算法
OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本方案介绍用户在没有向量数据的情况下,通过直接导入图片源数据,在OpenSearch内部便捷完成图片向量化、向量搜索等步骤,实现以图搜图、以文搜图等多种图像检索能力。
1477 0
|
8月前
|
存储 分布式计算 MaxCompute
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本文将介绍企业在没有向量数据的情况下,如何通过OpenSearch向量检索版、MaxCompute以及OSS,快速搭建图像搜索服务。
42684 1
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
|
9月前
|
存储 算法 大数据
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
|
10月前
|
SQL 存储 分布式计算
从大数据到图计算-Graph On BigData
从大数据到图计算-Graph On BigData
从大数据到图计算-Graph On BigData
|
11月前
|
SQL 存储 传感器
大数据大比拼:Hive vs HBase,你知道两者的区别和适用场景吗?
大数据大比拼:Hive vs HBase,你知道两者的区别和适用场景吗?
730 0
|
存储 传感器 分布式计算
大数据治理系列:2 再谈大数据应用的经典场景
大数据通常是根据道格·兰尼(DougLaney)首先描述的三个维度或特征来描述的:容量、多样性和速度。同时,众多组织也开始意识到,准确性也是一个关键因素,即数据背后的“信任因素”。
大数据治理系列:2 再谈大数据应用的经典场景
|
大数据
《游戏大数据通用场景和案例分析》电子版地址
《游戏大数据通用场景和案例分析》PDF
77 0
《游戏大数据通用场景和案例分析》电子版地址
|
消息中间件 存储 缓存
|
SQL 消息中间件 存储
大数据生态圈常用组件(二):概括介绍、功能特性、适用场景
大数据生态圈常用组件(二):概括介绍、功能特性、适用场景

热门文章

最新文章