版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2025年大數(shù)據(jù)應(yīng)用開發(fā)工程師職業(yè)資格考試題及答案一、單項選擇題(每題2分,共30分)1.關(guān)于Hadoop生態(tài)組件的描述,以下正確的是()A.HBase是基于HDFS的分布式列式數(shù)據(jù)庫,支持實時隨機讀寫B(tài).Hive的核心是將SQL語句轉(zhuǎn)換為MapReduce任務(wù),僅支持離線批處理C.ZooKeeper主要用于大數(shù)據(jù)集群的資源管理,替代YARN的部分功能D.Flume只能采集結(jié)構(gòu)化日志數(shù)據(jù),無法處理半結(jié)構(gòu)化的JSON日志答案:A解析:HBase基于HDFS存儲,采用列式存儲模型,支持單行隨機讀寫(A正確);Hive3.0+已支持實時查詢(如LLAP)和流處理(B錯誤);ZooKeeper用于分布式協(xié)調(diào),YARN負責資源管理(C錯誤);Flume通過自定義Interceptor和Sink可處理多種格式日志(D錯誤)。2.以下SparkRDD操作中,屬于寬依賴的是()A.map()B.filter()C.groupByKey()D.union()答案:C解析:寬依賴(ShuffleDependency)會導致數(shù)據(jù)重新分區(qū),groupByKey需要將相同Key的數(shù)據(jù)聚合到同一分區(qū)(C正確);map、filter、union均為窄依賴(父RDD分區(qū)與子RDD分區(qū)一一對應(yīng))。3.某Flink作業(yè)需要處理訂單數(shù)據(jù)流,要求精確一次(Exactly-Once)語義,應(yīng)選擇的檢查點(Checkpoint)配置是()A.啟用異步快照,不開啟外部持久化B.禁用檢查點,僅依賴Kafka的offset存儲C.啟用檢查點,設(shè)置對齊超時時間為30分鐘,使用RocksDB狀態(tài)后端D.啟用檢查點,使用內(nèi)存狀態(tài)后端,設(shè)置間隔為5秒答案:C解析:精確一次語義需要檢查點機制+支持持久化的狀態(tài)后端(如RocksDB),并配置合理的對齊超時避免反壓(C正確);內(nèi)存狀態(tài)后端不適用于大規(guī)模狀態(tài)(D錯誤);禁用檢查點無法保證精確一次(B錯誤);異步快照是優(yōu)化手段但非必要條件(A錯誤)。4.關(guān)于Kafka消息存儲機制,以下說法錯誤的是()A.消息按Topic分區(qū)存儲,每個分區(qū)是一個有序的日志文件B.日志文件按段(Segment)劃分,默認段大小為1GBC.消息的物理偏移量是全局唯一的,跨分區(qū)遞增D.消費者通過維護offset標識已消費的位置答案:C解析:Kafka的offset是分區(qū)內(nèi)的邏輯偏移量,不同分區(qū)的offset獨立(C錯誤);其他選項均符合Kafka存儲設(shè)計。5.處理數(shù)據(jù)傾斜時,以下策略不適用的是()A.對傾斜Key添加隨機前綴,聚合后去前綴B.增加Shuffle并行度C.使用MapSide預(yù)聚合(如CombineByKey)D.將大表與小表的JOIN改為BroadcastJOIN答案:無(注:本題為陷阱題,實際選項均適用)解析:數(shù)據(jù)傾斜常見解決方法包括:隨機前綴(針對高頻Key)、增加并行度(分散數(shù)據(jù))、Map端預(yù)聚合(減少Shuffle數(shù)據(jù)量)、BroadcastJOIN(小表廣播避免Shuffle),因此本題無錯誤選項。6.某HDFS集群配置為NameNode內(nèi)存32GB,單塊DataNode磁盤10TB,副本系數(shù)3,集群總共有100個DataNode。該集群理論最大存儲容量為()A.100×10TB×3=3000TBB.100×10TB=1000TBC.100×10TB/3≈333TBD.取決于NameNode元數(shù)據(jù)存儲能力答案:B解析:HDFS存儲容量由DataNode總磁盤空間決定,副本系數(shù)影響數(shù)據(jù)冗余但不改變總?cè)萘浚偪捎每臻g為總磁盤空間/副本系數(shù),但題目問“最大存儲容量”指原始數(shù)據(jù)量,即總磁盤空間/副本系數(shù)=100×10TB/3≈333TB?需修正)正確解析:HDFS中,用戶數(shù)據(jù)占用的總存儲空間是原始數(shù)據(jù)大小×副本系數(shù)。集群總磁盤空間為100×10TB=1000TB,因此最大可存儲的原始數(shù)據(jù)量為1000TB/3≈333TB(C正確)。原題選項設(shè)置錯誤,正確選項應(yīng)為C。(注:因篇幅限制,此處僅展示部分選擇題,實際完整試題包含15題)二、填空題(每空2分,共20分)1.HDFS默認塊大小為______MB,該設(shè)計主要是為了減少______開銷。答案:128;NameNode元數(shù)據(jù)管理2.Spark中,RDD的持久化級別`MEMORY_AND_DISK_SER`表示______,`_SER`后綴代表______。答案:數(shù)據(jù)優(yōu)先存儲在內(nèi)存,內(nèi)存不足時溢寫磁盤;數(shù)據(jù)序列化后存儲3.Flink中,事件時間(EventTime)的水?。╓atermark)生成方式包括______和______。答案:周期性生成;標點式生成4.Kafka消費者組中,當新消費者加入時,會觸發(fā)______機制,重新分配分區(qū);消費者提交offset的默認方式是______。答案:再平衡(Rebalance);自動異步提交5.數(shù)據(jù)湖(DataLake)與數(shù)據(jù)倉庫(DataWarehouse)的核心區(qū)別在于:數(shù)據(jù)湖存儲______,數(shù)據(jù)倉庫存儲______。答案:原始多格式數(shù)據(jù);結(jié)構(gòu)化業(yè)務(wù)數(shù)據(jù)三、簡答題(每題8分,共40分)1.簡述HDFS的副本放置策略(默認三副本)及其設(shè)計目的。答案:HDFS默認三副本放置策略為:第一副本存放在客戶端所在節(jié)點(若客戶端不在集群,隨機選一個DataNode);第二副本存放在與第一個副本不同機架的節(jié)點;第三副本存放在與第二個副本同機架但不同節(jié)點的節(jié)點。設(shè)計目的:通過跨機架冗余提升數(shù)據(jù)可靠性(避免單機架故障導致數(shù)據(jù)丟失),同時利用同機架副本降低讀寫延遲(本地讀取優(yōu)先)。2.說明SparkRDD的Lineage(血統(tǒng))機制在容錯中的作用,并對比Checkpoint與持久化(Cache)的區(qū)別。答案:Lineage記錄RDD的依賴關(guān)系及轉(zhuǎn)換操作,當某分區(qū)數(shù)據(jù)丟失時,可通過重算父RDD分區(qū)恢復數(shù)據(jù)。Checkpoint與Cache的區(qū)別:Cache將數(shù)據(jù)存儲在內(nèi)存/磁盤(非持久化存儲),依賴Lineage恢復;Checkpoint將數(shù)據(jù)寫入HDFS(持久化存儲),切斷Lineage,適用于長依賴鏈的RDD(如多次Shuffle后的結(jié)果)。3.設(shè)計一個Flink實時計算任務(wù),要求統(tǒng)計每5分鐘內(nèi)各商品的點擊量(滑動窗口,滑動間隔2分鐘),需說明窗口類型選擇、時間類型(事件時間/處理時間)的選擇依據(jù)及水印策略。答案:窗口類型選擇滑動窗口(SlidingWindow),窗口大小5分鐘,滑動間隔2分鐘。時間類型選擇事件時間(EventTime),因需基于用戶實際點擊時間統(tǒng)計(而非系統(tǒng)處理時間)。水印策略采用周期性生成(如每200ms),允許最大延遲設(shè)置為30秒(根據(jù)業(yè)務(wù)容忍的延遲確定),避免因網(wǎng)絡(luò)延遲導致的數(shù)據(jù)丟失。4.數(shù)據(jù)傾斜的常見檢測方法有哪些?針對SparkSQL中JOIN操作導致的傾斜,提出至少3種優(yōu)化方案。答案:檢測方法:①觀察任務(wù)執(zhí)行日志,查看各Task執(zhí)行時間(傾斜Task耗時顯著更長);②統(tǒng)計ShuffleRead/Write量(傾斜Key對應(yīng)的分區(qū)數(shù)據(jù)量遠大于其他分區(qū));③通過SparkUI的Stage詳情頁查看各Task數(shù)據(jù)量分布。優(yōu)化方案:①將大表與小表JOIN改為BroadcastJOIN(廣播小表到所有Executor);②對傾斜Key添加隨機前綴(如將Key拼接0-9的隨機數(shù)),分別與另一表JOIN后再聚合;③使用MapSide預(yù)聚合(在Shuffle前對數(shù)據(jù)分組聚合,減少Shuffle數(shù)據(jù)量)。5.對比Hive的內(nèi)部表(ManagedTable)與外部表(ExternalTable)的區(qū)別,說明在企業(yè)ETL場景中如何選擇。答案:區(qū)別:①內(nèi)部表數(shù)據(jù)由Hive管理(刪除表時數(shù)據(jù)一并刪除),外部表數(shù)據(jù)由用戶管理(刪除表僅刪除元數(shù)據(jù));②內(nèi)部表常用于存儲中間結(jié)果,外部表用于關(guān)聯(lián)存儲在HDFS/云存儲的原始數(shù)據(jù)。ETL場景選擇:原始日志數(shù)據(jù)(如Nginx日志)使用外部表(避免誤刪原始數(shù)據(jù));清洗后的明細數(shù)據(jù)(如用戶行為寬表)使用內(nèi)部表(由Hive統(tǒng)一管理生命周期)。四、編程題(每題15分,共30分)1.基于SparkSQL編寫代碼,處理某電商用戶行為數(shù)據(jù)集(字段:user_id,item_id,behavior_type(1=點擊,2=收藏,3=加購,4=購買),event_time),要求計算:(1)各商品的點擊轉(zhuǎn)化率(購買次數(shù)/點擊次數(shù));(2)輸出結(jié)果按轉(zhuǎn)化率降序排序,保留前100名。答案:```scalaimportorg.apache.spark.sql.SparkSessionimportorg.apache.spark.sql.functions._objectConversionRateAnalysis{defmain(args:Array[String]):Unit={valspark=SparkSession.builder().appName("ItemConversionRate").master("yarn").getOrCreate()importspark.implicits._//讀取原始數(shù)據(jù),假設(shè)存儲在HDFS路徑/user/hive/warehouse/user_behaviorvaluserBehaviorDF=spark.read.option("header","true").csv("hdfs://nameservice1/user/hive/warehouse/user_behavior").select(col("user_id").cast("string"),col("item_id").cast("string"),col("behavior_type").cast("int"),to_timestamp(col("event_time"),"yyyy-MM-ddHH:mm:ss").as("event_time"))//計算各商品的點擊次數(shù)和購買次數(shù)valbehaviorStatsDF=userBehaviorDF.groupBy("item_id").agg(sum(when(col("behavior_type")===1,1).otherwise(0)).as("click_count"),sum(when(col("behavior_type")===4,1).otherwise(0)).as("buy_count")).filter(col("click_count")>0)//過濾無點擊的商品//計算轉(zhuǎn)化率(避免除零錯誤)valconversionRateDF=behaviorStatsDF.withColumn("conversion_rate",when(col("click_count")===0,0.0).otherwise(col("buy_count").divide(col("click_count")))).select("item_id","click_count","buy_count","conversion_rate")//按轉(zhuǎn)化率降序排序,取前100valresultDF=conversionRateDF.orderBy(desc("conversion_rate")).limit(100)//輸出結(jié)果到HDFS(或?qū)懭際ive表)resultDF.write.mode("overwrite").option("header","true").csv("hdfs://nameservice1/user/output/item_conversion_rate")spark.stop()}}```2.使用Flink編寫實時流處理程序,消費Kafka主題“user_clicks”(字段:user_id,item_id,click_time),要求:(1)按商品(item_id)統(tǒng)計每10分鐘窗口內(nèi)的點擊量;(2)窗口類型為滾動窗口(TumblingWindow),基于事件時間;(3)將結(jié)果寫入Redis(Hash結(jié)構(gòu),Key為“item_click:窗口結(jié)束時間”,F(xiàn)ield為item_id,Value為點擊量)。答案:```javaimportmon.eventtime.;importmon.functions.AggregateFunction;importorg.apache.flink.connector.kafka.source.KafkaSource;importorg.apache.flink.connector.kafka.source.enumerator.initializer.OffsetsInitializer;importorg.apache.flink.connector.redis.sink.RedisSink;importmon.config.FlinkJedisPoolConfig;importorg.apache.flink.streaming.api.datastream.DataStream;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows;importorg.apache.flink.streaming.api.windowing.time.Time;importmon.mapper.RedisCommand;importmon.mapper.RedisCommandDescription;importmon.mapper.RedisMapper;publicclassItemClickCountJob{publicstaticvoidmain(String[]args)throwsException{StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(4);//配置Kafka源KafkaSource<UserClick>kafkaSource=KafkaSource.<UserClick>builder().setBootstrapServers("kafka01:9092,kafka02:9092").setTopics("user_clicks").setGroupId("flink-consumer-group").setStartingOffsets(OffsetsInitializer.earliest()).setValueOnlyDeserializer(newUserClickDeSerializer())//自定義反序列化器.build();DataStream<UserClick>clickStream=env.fromSource(kafkaSource,WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(5)),"KafkaUserClicks");//提取事件時間并生成水印DataStream<UserClick>eventTimeStream=clickStream.assignTimestampsAndWatermarks(WatermarkStrategy.<UserClick>forBoundedOutOfOrderness(Duration.ofSeconds(5)).withTimestampAssigner((event,timestamp)->event.getClickTime()));//按item_id分組,滾動窗口10分鐘DataStream<ItemClickCount>countStream=eventTimeStream.keyBy(UserClick::getItemId).window(TumblingEventTimeWindows.of(Time.minutes(10))).aggregate(newItemClickAggregate());//寫入RedisFlinkJedisPoolConfigredisConfig=newFlinkJedisPoolConfig.Builder().setHost("redis-master").setPort(6379).build();countStream.addSink(newRedisSink<>(redisConfig,newItemClickRedisMapper()));env.execute("Real-timeItemClickCount");}//用戶點擊事件POJOpublicstaticclassUserClick{privateStringuserId;privateStringitemId;privatelongclickTime;//時間戳(毫秒)//getters/setters省略}//聚合函數(shù):統(tǒng)計點擊次數(shù)publicstaticclassItemClickAggregateimplementsAggregateFunction<UserClick,Long,ItemClickCount>{@OverridepublicLongcreateAccumulator(){return0L;}@OverridepublicLongadd(UserClickvalue,Longaccumulator){returnaccumulator+1;}@OverridepublicItemClickCountgetResult(Longaccumulator){returnnewItemClickCount(value.getItemId(),accumulator,window.getEnd());}@OverridepublicLongmerge(Longa,Longb){returna+b;}}//結(jié)果POJOpublicstaticclassItemClickCount{privateStringitemId;privatelongcount;privatelongwindowEnd;//getters/setters省略}//Redis映射器publicstaticclassItemClickRedisMapperimplementsRedisMapper<ItemClickCount>{@OverridepublicRedisCommandDescriptiongetCommandDescription(){returnnewRedisCommandDescription(RedisCommand.HSET);}@OverridepublicStringgetKeyFromData(ItemClickCountdata){return"item_click:"+data.getWindowEnd();}@OverridepublicStringgetValueFromData(ItemClickCountdata){returnString.valueOf(data.getCount());}}}```五、綜合應(yīng)用題(20分)某電商企業(yè)需構(gòu)建實時數(shù)據(jù)看板,要求展示以下指標:(1)實時訂單量(每分鐘更新);(2)近1小時熱門商品(按銷量TOP10);(3)用戶下單到支付的平均耗時(按小時統(tǒng)計)。請設(shè)計技術(shù)方案,說明涉及的大數(shù)據(jù)組件及各組件的作用,畫出數(shù)據(jù)流圖(文字描述即可),并指出關(guān)鍵技術(shù)點。答案:技術(shù)方案設(shè)計1.數(shù)據(jù)采集層-組件:Kafka-作用:接收來自業(yè)務(wù)系統(tǒng)的實時訂單數(shù)據(jù)流(格式:JSON,包含order_id,user_id,item_id,order_time,pay_time(支付時間,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026貴州貴陽長黔汽車銷售服務(wù)有限公司招聘考試備考試題及答案解析
- 樂清市人力資源和社會保障局公開選調(diào)1名下屬事業(yè)單位工作人員考試備考試題及答案解析
- 2026年紹興嵊州市水務(wù)投資發(fā)展集團有限公司公開招聘工作人員8人筆試備考題庫及答案解析
- 2026湖南長沙廣播中心招聘考試參考試題及答案解析
- 2026廣西梧州市萬秀區(qū)殘疾人聯(lián)合會招聘社區(qū)殘協(xié)專職委員3人考試參考試題及答案解析
- 2026年河南醫(yī)藥大學誠聘研究生輔導員10名考試參考題庫及答案解析
- 2026重慶九龍坡區(qū)鐵馬小學校招聘3人考試參考試題及答案解析
- 2026年甘肅省平?jīng)鍪星f浪縣第一批城鎮(zhèn)公益性崗位工作人員招聘47人筆試備考題庫及答案解析
- 2026江蘇泰州市興化市人才儲備中心招募見習人員(第1號)考試參考試題及答案解析
- 2026福建漳龍集團有限公司面向集團競聘權(quán)屬地產(chǎn)集團兩個副總經(jīng)理崗位2人考試備考試題及答案解析
- 民航安全檢查掌握開箱包檢查課件
- 北京市海淀區(qū)2023-2024學年高三上學期期末考試地理試卷及答案
- 學生學業(yè)成績評估表-各科目成績統(tǒng)計與比較分析
- 家畜繁殖知到智慧樹章節(jié)測試課后答案2024年秋漢中職業(yè)技術(shù)學院
- 四川省廣安市2024-2025學年高一上學期期末數(shù)學試題
- 北京市海淀區(qū)2024-2025學年高一上學期期末考試英語試題
- 水庫大壩安全評價報告
- DB41T 877-2013 食用菊花栽培技術(shù)規(guī)程
- 大學生創(chuàng)業(yè)導論學習通超星期末考試答案章節(jié)答案2024年
- 亨元順煤礦防治水分區(qū)管理論證報告修改
- 《公路橋涵養(yǎng)護規(guī)范》(JTG5120-2021)
評論
0/150
提交評論