版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(2025年)大数据开发培训测试试题及答案一、单项选择题(每题2分,共20分)1.关于HDFS的默认块大小,2025年主流发行版中通常设置为?A.32MBB.64MBC.128MBD.256MB2.以下哪项不是YARN的核心组件?A.ResourceManagerB.NodeManagerC.ApplicationMasterD.NameNode3.Spark中,若需要将RDD的每个元素应用一个函数,并将结果合并为一个集合,应使用?A.mapB.flatMapC.reduceD.collect4.Flink中处理事件时间(EventTime)时,用于解决数据延迟的核心机制是?A.水印(Watermark)B.窗口(Window)C.状态(State)D.检查点(Checkpoint)5.Hive中,以下哪种存储格式同时支持列存储和压缩,且适合大数据量查询?A.TextFileB.SequenceFileC.ParquetD.RCFile6.关于Kafka的消费者组(ConsumerGroup),以下描述错误的是?A.同一个组内的消费者共同消费一个主题的分区B.不同组的消费者可以重复消费同一消息C.消费者组的偏移量(Offset)默认存储在ZooKeeper中D.消费者组通过协调器(Coordinator)管理成员7.HBase中,RowKey的设计原则不包括?A.散列化以避免热点B.尽可能长以保证唯一性C.按查询模式排序D.避免使用时间戳作为前缀(除非范围查询)8.以下哪项不是SparkShuffle的优化手段?A.增加spark.shuffle.file.buffer大小B.启用pressC.减少分区数(Partitions)D.使用Tungsten-SortShuffleManager9.Flink任务中,若需要将状态持久化到HDFS,应选择以下哪种状态后端(StateBackend)?A.MemoryStateBackendB.FsStateBackendC.RocksDBStateBackendD.HashMapStateBackend10.数据仓库(DataWarehouse)的核心特征不包括?A.面向主题(Subject-Oriented)B.实时性(Real-Time)C.集成性(Integrated)D.非易失性(Non-Volatile)二、填空题(每空2分,共20分)1.HBase的RowKey最大长度为______字节(默认限制)。2.Kafka中,ISR的全称是______。3.SparkRDD的持久化(Persistence)默认存储级别是______。4.Flink的窗口(Window)按触发方式可分为______和______。5.Hive的元数据(Metadata)默认存储在______数据库中(填写具体数据库名称)。6.分布式系统中,CAP理论指的是______、______和分区容错性(PartitionTolerance)。7.数据仓库分层中,DWS层的全称是______。三、简答题(每题8分,共40分)1.简述Hive中分区(Partition)和分桶(Bucket)的区别及适用场景。2.说明SparkRDD的持久化(Cache/Persist)与检查点(Checkpoint)的核心区别。3.解释Flink水印(Watermark)的作用及提供方式(至少列举2种)。4.描述HBase的读数据流程(需包含RegionServer、MemStore、HFile等关键组件)。5.列举3种解决数据倾斜(DataSkew)的常用方法,并说明其适用场景。四、编程题(每题10分,共30分)1.(SparkSQL)给定JSON格式的用户行为数据(路径:/user/logs/user_behavior.json),字段包含user_id(用户ID)、province(省份)、active_time(活跃时间,时间戳),要求统计2025年1月各省份的活跃用户数(去重)。请写出SparkSQL代码(需包含读取数据、过滤时间、分组去重统计的完整逻辑)。2.(Flink)设计一个实时计算任务,从Kafka主题“app_click”(消息格式:app_id(应用ID)、click_time(点击时间,时间戳))中读取数据,计算每5分钟各APP的点击量(窗口为滑动窗口,滑动间隔2分钟)。要求使用事件时间(EventTime),并处理10秒内的延迟数据。请写出关键代码逻辑(需包含数据源定义、水印提供、窗口定义及聚合操作)。3.(HiveUDF)自定义一个HiveUDF,实现手机号脱敏功能:将手机号中间4位替换为“”(例换为1385678)。要求写出UDF类的核心代码(需继承Hive的UDF基类,并实现evaluate方法)。五、综合应用题(每题15分,共30分)1.某电商公司需要构建用户行为数据仓库,数据源包括:-前端埋点日志(JSON格式,包含用户ID、商品ID、行为类型(点击/加购/下单)、时间戳);-业务数据库(MySQL)中的用户表(user_id、注册时间、性别)、商品表(item_id、品类、价格)。要求设计数据仓库的分层架构(至少包含4层),并说明每一层的作用、存储格式及分区策略。同时,列举2个该数据仓库支持的核心业务指标(如日活用户数、下单转化率)。2.一个Spark任务运行缓慢,日志显示ShuffleRead时间占比超过60%,且部分Executor出现内存溢出(OOM)。请分析可能的原因,并提出至少5种优化措施(需结合Spark运行机制和参数调优)。答案一、单项选择题1.C(HDFS默认块大小通常为128MB,2025年主流发行版未做重大调整)2.D(NameNode是HDFS组件,非YARN核心组件)3.B(flatMap用于将元素展开并合并集合)4.A(水印是处理事件时间延迟的核心机制)5.C(Parquet支持列存储和压缩,适合大数据查询)6.C(Kafka0.9+版本偏移量默认存储在__consumer_offsets主题,非ZooKeeper)7.B(RowKey应尽量简短,过长会增加存储和查询开销)8.C(减少分区数可能导致数据倾斜,需根据数据量调整)9.B(FsStateBackend将状态持久化到文件系统如HDFS)10.B(数据仓库通常面向分析,非实时性是核心特征之一)二、填空题1.64KB(HBase默认RowKey最大长度为64KB)2.In-SyncReplicas(同步副本集合)3.MEMORY_ONLY(默认存储级别为仅内存)4.时间窗口(TimeWindow)、计数窗口(CountWindow)(或其他合理分类如滚动/滑动窗口)5.Derby(Hive元数据默认存储在嵌入式Derby数据库)6.一致性(Consistency)、可用性(Availability)7.数据仓库服务层(DataWarehouseServiceLayer)三、简答题1.分区与分桶的区别及场景:-分区(Partition):基于表的某一字段(如时间、地域)将数据存储在不同目录下,用于减少全表扫描范围,适合大范围过滤(如按天分区筛选某日数据)。-分桶(Bucket):基于哈希算法将数据分散到多个文件(桶),用于提升JOIN效率(相同桶的文件可局部JOIN)和抽样查询,适合数据量大且需要细粒度分散的场景(如用户ID分桶)。2.持久化与检查点的区别:-存储位置:持久化默认存储在内存/磁盘(由存储级别决定);检查点强制存储在外部存储(如HDFS)。-触发方式:持久化由用户调用cache()/persist()触发,随RDD计算提供;检查点需显式调用checkpoint(),且需要行动操作触发。-容错性:持久化丢失后需重算父RDD;检查点丢失后可直接从检查点恢复,无需重算。3.Flink水印的作用及提供方式:-作用:水印是事件时间的进度标识,用于告知Flink系统“当前时间已处理到T,后续不会有早于T的事件时间数据”,从而触发窗口计算并处理延迟数据。-提供方式:-周期性水印(PeriodicWatermark):按固定间隔(如每200ms)提供,根据当前最大事件时间减去固定延迟(如withIdleness(Duration.ofSeconds(10)))。-断点式水印(PunctuatedWatermark):基于特定事件(如接收到特殊标记)触发水印提供,适用于事件时间不连续的场景。4.HBase读数据流程:-用户发送读请求到RegionServer,根据RowKey定位目标Region。-RegionServer先检查MemStore(内存缓存)是否有匹配数据,若有则返回。-若MemStore无数据,扫描HFile(磁盘文件),通过布隆过滤器(BloomFilter)快速排除不包含目标RowKey的HFile。-合并MemStore和HFile中的数据(可能涉及版本控制),返回给用户。5.数据倾斜解决方法:-预处理数据源:对倾斜键(如高频ID)添加随机前缀,分散到多个分区,聚合后去前缀(适用于GROUPBY倾斜)。-调整并行度:增加Shuffle阶段的分区数(如设置spark.sql.shuffle.partitions),分散数据到更多Task(适用于数据分布不均但总量可接受场景)。-使用广播JOIN:将小表广播到所有Executor,避免Shuffle(适用于大表与小表JOIN导致的倾斜)。-自定义分区器:针对倾斜键设计特定分区策略(如按频次分桶),均衡数据分布(适用于已知倾斜键的场景)。四、编程题1.SparkSQL代码:```scalaimportorg.apache.spark.sql.SparkSessionobjectProvinceActiveUser{defmain(args:Array[String]):Unit={valspark=SparkSession.builder().appName("ProvinceActiveUserCount").master("yarn").getOrCreate()importspark.implicits._//读取JSON数据valuserBehavior=spark.read.json("/user/logs/user_behavior.json")//过滤2025年1月数据(active_time为时间戳,单位毫秒)valjanData=userBehavior.filter($"active_time">=1704067200000L&&//2025-01-0100:00:00$"active_time"<1706745600000L//2025-02-0100:00:00)//分组去重统计janData.groupBy("province").agg(countDistinct("user_id").as("active_user_count")).orderBy("province").show()}}```2.Flink实时计算代码(关键逻辑):```javaimportmon.eventtime.;importmon.functions.AggregateFunction;importorg.apache.flink.connector.kafka.source.KafkaSource;importorg.apache.flink.streaming.api.datastream.DataStream;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.streaming.api.windowing.assigners.SlidingEventTimeWindows;importorg.apache.flink.streaming.api.windowing.time.Time;publicclassAppClickCount{publicstaticvoidmain(String[]args)throwsException{StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();//定义Kafka数据源KafkaSource<AppClickEvent>kafkaSource=KafkaSource.<AppClickEvent>builder().setBootstrapServers("kafka-broker:9092").setTopics("app_click").setGroupId("click-count-group").setDeserializer(newAppClickEventDeserializer()).build();DataStream<AppClickEvent>clickStream=env.fromSource(kafkaSource,WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(10)),"KafkaSource");//定义水印策略(允许10秒延迟)WatermarkStrategy<AppClickEvent>watermarkStrategy=WatermarkStrategy.<AppClickEvent>forBoundedOutOfOrderness(Duration.ofSeconds(10)).withTimestampAssigner((event,timestamp)->event.getClickTime());//窗口计算(滑动窗口:5分钟窗口,2分钟滑动间隔)clickStream.assignTimestampsAndWatermarks(watermarkStrategy).keyBy(AppClickEvent::getAppId).window(SlidingEventTimeWindows.of(Time.minutes(5),Time.minutes(2))).aggregate(newClickCountAgg()).print();env.execute("AppClickCountJob");}//自定义聚合函数publicstaticclassClickCountAggimplementsAggregateFunction<AppClickEvent,Long,Long>{@OverridepublicLongcreateAccumulator(){return0L;}@OverridepublicLongadd(AppClickEventevent,Longaccumulator){returnaccumulator+1;}@OverridepublicLonggetResult(Longaccumulator){returnaccumulator;}@OverridepublicLongmerge(Longa,Longb){returna+b;}}}```3.HiveUDF代码:```javaimportorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;publicclassMobileMaskUDFextendsUDF{publicTextevaluate(Textmobile){if(mobile==null){returnnull;}StringmobileStr=mobile.toString();//校验手机号格式(11位数字)if(mobileStr.matches("^1[3-9]\\d{9}$")){returnnewText(mobileStr.substring(0,3)+""+mobileStr.substring(7));}//非手机号返回原字符串returnmobile;}}```五、综合应用题1.电商数据仓库设计:-分层架构:-ODS层(操作数据层):存储原始数据,包括前端日志(JSON)和业务库增量(通过Canal同步的Binlog),存储格式为Parquet,按“dt=日期”分区(支持按天回溯)。作用:保留原始记录,不做清洗。-DWD层(明细数据层):对ODS数据清洗(如去重、补全空值),关联用户表和商品表(通过用户ID、商品ID),存储格式为ORC(支持高效压缩和查询),按“dt=日期+hr=小时”分区(支持小时级明细查询)。作用:提供一致、干净的明细数据。-DWS层(汇总数据层):基于DWD层按主题汇总(如用户行为主题、商品主题),计算日/小时级聚合指标(如用户当日点击次数、商品加购次数),存储格式为Parquet,按“dt=日期”分区。作用:减少ADS层计算量,提升查询效率。-ADS层(应用数据层):直接对接业务,存储报表/BI所需的最终指标(如日活用户数、各品类下单转化率),存储格式为宽表(CSV或列式存储),按“dt=日期”分区。作用:支持快速查询和可视化。-核心指标:-日活用户数(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 梧州市蝶山区2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 承德市双桥区2025-2026学年第二学期五年级语文期末考试卷(部编版含答案)
- 襄樊市襄城区2025-2026学年第二学期四年级语文第八单元测试卷(部编版含答案)
- 阿勒泰地区富蕴县2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 气动元件制造工安全演练测试考核试卷含答案
- 中央空调清洗工岗前技能理论考核试卷含答案
- 易货师安全操作强化考核试卷含答案
- 对二乙基苯装置操作工安全知识竞赛评优考核试卷含答案
- 雅安地区汉源县2025-2026学年第二学期五年级语文期末考试卷(部编版含答案)
- 临沂市河东区2025-2026学年第二学期五年级语文第七单元测试卷(部编版含答案)
- 教科版三年级下册科学实验报告(20 篇)
- 2026年教师资格认证教育心理学试题集及答案解析
- 2025年10月自考00292市政学试题及答案
- GB/T 24810.1-2026起重机限制器和指示器第1部分:通则
- 肾癌的转移-图文
- 社会捐赠规范化管理制度
- AI行为识别在小学值日生工作量化考核与考勤系统课题报告教学研究课题报告
- 甲亢危象课件教学
- 2025年错题打印机市场调研:便携款需求与学生携带分析
- 生物必修三知识点检测题与答案解析
- 芯片销售入职培训课件
评论
0/150
提交评论