- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据工程师面试题及答案(实战版)
一、基础技能题(考察核心工具与原理)
问题:Hive中内部表和外部表的核心区别是什么?实际工作中怎么选择?
答案:核心区别在数据归属和删除行为——内部表的元数据和数据均由Hive管理,删除表时会同时删除底层数据;外部表仅管理元数据,数据存储在外部路径(如HDFS、OSS),删表不会删原始数据。
选择逻辑:①若数据仅为Hive专用(如临时计算结果、中间表),用内部表,方便一键清理;②若数据需多工具共享(如同时供Spark、Flink读取)、需长期留存,或担心误删数据,用外部表,且建议手动管理数据生命周期。
问题:Spark中宽依赖和窄依赖的区别?为什么这对任务调度很重要?
答案:窄依赖是子RDD分区仅依赖父RDD单个分区(如map、filter),数据无需跨节点传输;宽依赖是子RDD分区依赖父RDD多个分区(如shuffle、groupByKey),必须触发数据重分区和网络传输。
调度意义:窄依赖可并行执行,失败后仅需重试对应分区;宽依赖会产生Stage边界,且shuffle过程耗资源、易出错,调度时需优先优化(如用reduceByKey替代groupByKey减少数据传输,或调整分区数匹配集群资源)。
问题:数据同步场景中,全量同步和增量同步怎么选?增量同步常用哪些实现方式?
答案:选择逻辑:①数据量小、更新频率极低(如字典表),用全量同步(简单易维护);②数据量大、高频更新(如用户行为表、订单表),用增量同步(减少IO和耗时)。
增量实现方式:①基于时间戳(表中含创建/更新时间字段,每次同步上一次同步时间至今的数据,最常用);②基于日志(如MySQLbinlog、MongoDBoplog,捕获所有数据变更,实时性高);③基于主键(记录上次同步的最大主键,下次同步大于该主键的数据,适用于主键自增场景)。
二、架构设计题(考察业务落地能力)
问题:设计一套实时数据处理架构,用于统计电商平台的实时销售额、热门商品Top10,要求延迟控制在秒级,数据来源包括订单表(MySQL)、商品表(MySQL)、用户行为表(Kafka)。
答案:架构链路如下:
数据采集层:①MySQL数据通过Canal解析binlog,实时同步到Kafka(订单表、商品表主题);②用户行为数据(点击、加购)直接写入Kafka对应主题。
数据处理层:用Flink作为核心处理引擎,①消费订单表Kafka主题,过滤有效订单(已支付),实时计算销售额(按分钟/小时滚动聚合);②关联订单表和商品表数据(FlinkSQL维表关联,商品表数据可缓存到Redis提高查询效率);③消费用户行为表主题,统计商品点击量/加购量,按窗口(如5分钟)聚合热门商品Top10。
数据存储层:①实时指标(销售额、Top10)写入Redis(支持高并发查询);②原始明细数据和聚合结果写入ClickHouse(用于后续离线分析和指标回溯)。
数据展示层:通过Grafana连接Redis/ClickHouse,搭建实时监控面板,展示销售额趋势、热门商品列表。
关键优化:①Flink状态后端用RocksDB,开启增量checkpoint减少资源占用;②Kafka分区数与Flink并行度匹配,避免数据倾斜;③商品表维表关联时,设置缓存过期时间,保证数据新鲜度。
问题:如何设计数据仓库分层?各层的作用是什么?实际工作中怎么避免数据冗余?
答案:经典分层(从下到上)及作用:
ODS层(操作数据存储层):存储原始数据,完全还原数据源结构(如MySQL表、Kafka日志),不做任何清洗和转换,保留数据原貌,用于数据溯源。
DWD层(数据仓库明细层):对ODS层数据进行清洗(去重、补缺失值、过滤无效数据)、标准化(统一字段命名、数据格式),按业务过程拆分表(如订单明细、支付明细),保留最细粒度数据。
DWS层(数据仓库汇总层):基于DWD层按业务主题聚合(如用户主题、商品主题、订单主题),计算常用指标(如用户下单次数、商品销售额),供上层直接使用,减少重复计算。
ADS层(应用数据服务层):针对具体业务需求(如报表、大屏、API查询),对DWS层数据进一步聚合或筛选,提供最终可用的数据结果。
避免冗余:①统一维度表(如用户维度、商品维度),所有层共用同一套维度表,不重复存储;②DWS层按主题聚合,避免按不同业务场景重复计算相同指标;③定期审计数据(如通过Hive元数据工具),清理长期未使用的表和字段;④采用拉链表存储缓慢变化维度(如用户等级变更),而非全量覆盖,减
原创力文档


文档评论(0)