大数据相关面试题每日五问(一)
- SQL的偏移量怎么实现,怎么排序?
- MapReduce中的数据倾斜你了解多少?如何解决数据倾斜?
- Spark如何划分stage?
- 数仓理论了解多少?简单说一下分层。
- 给你一个数据需求,开发思路是怎么样的,简单描述一下。
大数据相关面试题每日五问(二):https://www.nowcoder.com/discuss/739079633773023232
SQL的偏移量怎么实现,怎么排序?
在 SQL 中,排序通常通过 ORDER BY
实现,可以指定某一列按升序(ASC)或降序(DESC)排列,而偏移量(即从第几条记录开始返回)则通过 LIMIT
和 OFFSET
实现,常用于分页查询。例如,ORDER BY score DESC
表示按照成绩从高到低排序,LIMIT 10 OFFSET 10
表示跳过前 10 条记录,返回接下来的 10 条数据,从而实现第 11 到第 20 条记录的查询。需要注意的是,偏移量查询必须配合排序使用,否则结果顺序不确定。在 MySQL 中也可以使用简写形式 LIMIT 10, 10
,意思是从第 11 条开始取 10 条。而在 Hive 中,由于 ORDER BY
会将所有数据集中到一个 reducer 上,效率较低,因此更常使用 DISTRIBUTE BY
配合 SORT BY
来实现更高效的排序和分页。
MapReduce中的数据倾斜你了解多少?如何解决数据倾斜?
在 MapReduce 中,数据倾斜是指某些 key 的数据量远大于其他 key,导致某些 reducer 处理时间远长于其他 reducer,从而拉低整体作业效率。数据倾斜常发生在 shuffle 阶段,原因包括 key 分布不均、热点 key 过多或 join 操作中某一表数据倾斜。为了解决数据倾斜,可以采用多种方法:一是使用 随机前缀法 将热点 key 拆分为多个子 key,分散到不同 reducer,再在 reduce 端汇总;二是对大表和小表 join 时使用 map 端 join 或 广播小表,避免 reducer 端数据倾斜;三是通过 采样分析 key 分布,定位热点数据并做针对性优化;四是对于极端倾斜的 key,也可以考虑 单独处理 或 排除后单独合并。总之,关键在于打散热点 key,均衡 reducer 的数据负载。
Spark如何划分stage?
在 Spark 中,stage 的划分是基于 RDD 之间的依赖关系 来进行的,具体来说,只有遇到 宽依赖(wide dependency) 时才会划分新的 stage。窄依赖(如 map、filter)是上一个 RDD 的每个分区只依赖上一个 RDD 的一个分区,因此可以在一个 stage 内顺序执行;而宽依赖(如 groupByKey、reduceByKey)会导致某个分区依赖上一个 RDD 的多个分区,涉及到 shuffle 操作,所以需要划分新的 stage。Spark 会从最终的 action 操作开始,反向追踪 RDD 的依赖关系,当遇到宽依赖时就断开,形成一个新的 stage,直到最前面的数据源。划分完成后,Spark 会将每个 stage 中的任务分发给不同 executor 的 task 去执行。这样划分的目的是为了优化执行计划,提高并行度和执行效率。
数仓理论了解多少?简单说一下分层。
数仓理论主要是为了解决数据整合、清洗和高效分析的问题,它强调数据的统一口径、稳定性和可复用性。在数仓架构中,通常采用分层设计,常见的分层包括:ODS(操作数据层),用于存储最原始的、从业务系统同步过来的数据,基本不做处理;DWD(数据明细层),对 ODS 的数据进行清洗、去重、标准化,保留最详细的事实数据,是数据加工的基础层;DWS(数据汇总层),对 DWD 层的数据按主题和维度进行聚合、统计,适用于业务分析需求;ADS(应用数据层),面向具体的报表和场景需求进行加工,提供最终的分析结果或接口支持。通过分层设计可以提高数据质量、增强可维护性,并降低上下游系统之间的耦合。
给你一个数据需求,开发思路是怎么样的,简单描述一下。
面对一个数据需求,通常的开发思路可以分为五个步骤:第一,明确业务需求,与需求方沟通清楚要解决的问题、核心指标和口径,确保对业务目标理解一致;第二,梳理数据来源,确定需要哪些原始表、字段、分区以及数据更新周期;第三,设计数仓模型,根据维度与事实的关系,确定建表逻辑,分清明细层(DWD)、汇总层(DWS)或应用层(ADS)的位置;第四,编写 ETL 脚本,使用 Hive、Spark 等工具编写 SQL 或代码实现数据的清洗、转换和加工,同时做好数据质量校验和分区管理;最后,输出数据结果,将结果表或接口对接给下游使用方,如报表系统、大屏展示或接口服务,并做好上线后的监控和维护。整个过程中要注重沟通、版本控制和数据口径的一致性,确保数据的准确性和稳定性。
#数据人的面试交流地#努力找实习中,整理一些大数据相关面试题和大家分享,共同学习进步,有建议或批评欢迎留言!