版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(2025年)大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)測(cè)試試題及答案一、單項(xiàng)選擇題(每題2分,共20分)1.關(guān)于HDFS的默認(rèn)塊大小,2025年主流發(fā)行版中通常設(shè)置為?A.32MBB.64MBC.128MBD.256MB2.以下哪項(xiàng)不是YARN的核心組件?A.ResourceManagerB.NodeManagerC.ApplicationMasterD.NameNode3.Spark中,若需要將RDD的每個(gè)元素應(yīng)用一個(gè)函數(shù),并將結(jié)果合并為一個(gè)集合,應(yīng)使用?A.mapB.flatMapC.reduceD.collect4.Flink中處理事件時(shí)間(EventTime)時(shí),用于解決數(shù)據(jù)延遲的核心機(jī)制是?A.水?。╓atermark)B.窗口(Window)C.狀態(tài)(State)D.檢查點(diǎn)(Checkpoint)5.Hive中,以下哪種存儲(chǔ)格式同時(shí)支持列存儲(chǔ)和壓縮,且適合大數(shù)據(jù)量查詢(xún)?A.TextFileB.SequenceFileC.ParquetD.RCFile6.關(guān)于Kafka的消費(fèi)者組(ConsumerGroup),以下描述錯(cuò)誤的是?A.同一個(gè)組內(nèi)的消費(fèi)者共同消費(fèi)一個(gè)主題的分區(qū)B.不同組的消費(fèi)者可以重復(fù)消費(fèi)同一消息C.消費(fèi)者組的偏移量(Offset)默認(rèn)存儲(chǔ)在ZooKeeper中D.消費(fèi)者組通過(guò)協(xié)調(diào)器(Coordinator)管理成員7.HBase中,RowKey的設(shè)計(jì)原則不包括?A.散列化以避免熱點(diǎn)B.盡可能長(zhǎng)以保證唯一性C.按查詢(xún)模式排序D.避免使用時(shí)間戳作為前綴(除非范圍查詢(xún))8.以下哪項(xiàng)不是SparkShuffle的優(yōu)化手段?A.增加spark.shuffle.file.buffer大小B.啟用pressC.減少分區(qū)數(shù)(Partitions)D.使用Tungsten-SortShuffleManager9.Flink任務(wù)中,若需要將狀態(tài)持久化到HDFS,應(yīng)選擇以下哪種狀態(tài)后端(StateBackend)?A.MemoryStateBackendB.FsStateBackendC.RocksDBStateBackendD.HashMapStateBackend10.數(shù)據(jù)倉(cāng)庫(kù)(DataWarehouse)的核心特征不包括?A.面向主題(Subject-Oriented)B.實(shí)時(shí)性(Real-Time)C.集成性(Integrated)D.非易失性(Non-Volatile)二、填空題(每空2分,共20分)1.HBase的RowKey最大長(zhǎng)度為_(kāi)_____字節(jié)(默認(rèn)限制)。2.Kafka中,ISR的全稱(chēng)是______。3.SparkRDD的持久化(Persistence)默認(rèn)存儲(chǔ)級(jí)別是______。4.Flink的窗口(Window)按觸發(fā)方式可分為_(kāi)_____和______。5.Hive的元數(shù)據(jù)(Metadata)默認(rèn)存儲(chǔ)在______數(shù)據(jù)庫(kù)中(填寫(xiě)具體數(shù)據(jù)庫(kù)名稱(chēng))。6.分布式系統(tǒng)中,CAP理論指的是______、______和分區(qū)容錯(cuò)性(PartitionTolerance)。7.數(shù)據(jù)倉(cāng)庫(kù)分層中,DWS層的全稱(chēng)是______。三、簡(jiǎn)答題(每題8分,共40分)1.簡(jiǎn)述Hive中分區(qū)(Partition)和分桶(Bucket)的區(qū)別及適用場(chǎng)景。2.說(shuō)明SparkRDD的持久化(Cache/Persist)與檢查點(diǎn)(Checkpoint)的核心區(qū)別。3.解釋Flink水印(Watermark)的作用及提供方式(至少列舉2種)。4.描述HBase的讀數(shù)據(jù)流程(需包含RegionServer、MemStore、HFile等關(guān)鍵組件)。5.列舉3種解決數(shù)據(jù)傾斜(DataSkew)的常用方法,并說(shuō)明其適用場(chǎng)景。四、編程題(每題10分,共30分)1.(SparkSQL)給定JSON格式的用戶(hù)行為數(shù)據(jù)(路徑:/user/logs/user_behavior.json),字段包含user_id(用戶(hù)ID)、province(省份)、active_time(活躍時(shí)間,時(shí)間戳),要求統(tǒng)計(jì)2025年1月各省份的活躍用戶(hù)數(shù)(去重)。請(qǐng)寫(xiě)出SparkSQL代碼(需包含讀取數(shù)據(jù)、過(guò)濾時(shí)間、分組去重統(tǒng)計(jì)的完整邏輯)。2.(Flink)設(shè)計(jì)一個(gè)實(shí)時(shí)計(jì)算任務(wù),從Kafka主題“app_click”(消息格式:app_id(應(yīng)用ID)、click_time(點(diǎn)擊時(shí)間,時(shí)間戳))中讀取數(shù)據(jù),計(jì)算每5分鐘各APP的點(diǎn)擊量(窗口為滑動(dòng)窗口,滑動(dòng)間隔2分鐘)。要求使用事件時(shí)間(EventTime),并處理10秒內(nèi)的延遲數(shù)據(jù)。請(qǐng)寫(xiě)出關(guān)鍵代碼邏輯(需包含數(shù)據(jù)源定義、水印提供、窗口定義及聚合操作)。3.(HiveUDF)自定義一個(gè)HiveUDF,實(shí)現(xiàn)手機(jī)號(hào)脫敏功能:將手機(jī)號(hào)中間4位替換為“”(例換為1385678)。要求寫(xiě)出UDF類(lèi)的核心代碼(需繼承Hive的UDF基類(lèi),并實(shí)現(xiàn)evaluate方法)。五、綜合應(yīng)用題(每題15分,共30分)1.某電商公司需要構(gòu)建用戶(hù)行為數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)源包括:-前端埋點(diǎn)日志(JSON格式,包含用戶(hù)ID、商品ID、行為類(lèi)型(點(diǎn)擊/加購(gòu)/下單)、時(shí)間戳);-業(yè)務(wù)數(shù)據(jù)庫(kù)(MySQL)中的用戶(hù)表(user_id、注冊(cè)時(shí)間、性別)、商品表(item_id、品類(lèi)、價(jià)格)。要求設(shè)計(jì)數(shù)據(jù)倉(cāng)庫(kù)的分層架構(gòu)(至少包含4層),并說(shuō)明每一層的作用、存儲(chǔ)格式及分區(qū)策略。同時(shí),列舉2個(gè)該數(shù)據(jù)倉(cāng)庫(kù)支持的核心業(yè)務(wù)指標(biāo)(如日活用戶(hù)數(shù)、下單轉(zhuǎn)化率)。2.一個(gè)Spark任務(wù)運(yùn)行緩慢,日志顯示ShuffleRead時(shí)間占比超過(guò)60%,且部分Executor出現(xiàn)內(nèi)存溢出(OOM)。請(qǐng)分析可能的原因,并提出至少5種優(yōu)化措施(需結(jié)合Spark運(yùn)行機(jī)制和參數(shù)調(diào)優(yōu))。答案一、單項(xiàng)選擇題1.C(HDFS默認(rèn)塊大小通常為128MB,2025年主流發(fā)行版未做重大調(diào)整)2.D(NameNode是HDFS組件,非YARN核心組件)3.B(flatMap用于將元素展開(kāi)并合并集合)4.A(水印是處理事件時(shí)間延遲的核心機(jī)制)5.C(Parquet支持列存儲(chǔ)和壓縮,適合大數(shù)據(jù)查詢(xún))6.C(Kafka0.9+版本偏移量默認(rèn)存儲(chǔ)在__consumer_offsets主題,非ZooKeeper)7.B(RowKey應(yīng)盡量簡(jiǎn)短,過(guò)長(zhǎng)會(huì)增加存儲(chǔ)和查詢(xún)開(kāi)銷(xiāo))8.C(減少分區(qū)數(shù)可能導(dǎo)致數(shù)據(jù)傾斜,需根據(jù)數(shù)據(jù)量調(diào)整)9.B(FsStateBackend將狀態(tài)持久化到文件系統(tǒng)如HDFS)10.B(數(shù)據(jù)倉(cāng)庫(kù)通常面向分析,非實(shí)時(shí)性是核心特征之一)二、填空題1.64KB(HBase默認(rèn)RowKey最大長(zhǎng)度為64KB)2.In-SyncReplicas(同步副本集合)3.MEMORY_ONLY(默認(rèn)存儲(chǔ)級(jí)別為僅內(nèi)存)4.時(shí)間窗口(TimeWindow)、計(jì)數(shù)窗口(CountWindow)(或其他合理分類(lèi)如滾動(dòng)/滑動(dòng)窗口)5.Derby(Hive元數(shù)據(jù)默認(rèn)存儲(chǔ)在嵌入式Derby數(shù)據(jù)庫(kù))6.一致性(Consistency)、可用性(Availability)7.數(shù)據(jù)倉(cāng)庫(kù)服務(wù)層(DataWarehouseServiceLayer)三、簡(jiǎn)答題1.分區(qū)與分桶的區(qū)別及場(chǎng)景:-分區(qū)(Partition):基于表的某一字段(如時(shí)間、地域)將數(shù)據(jù)存儲(chǔ)在不同目錄下,用于減少全表掃描范圍,適合大范圍過(guò)濾(如按天分區(qū)篩選某日數(shù)據(jù))。-分桶(Bucket):基于哈希算法將數(shù)據(jù)分散到多個(gè)文件(桶),用于提升JOIN效率(相同桶的文件可局部JOIN)和抽樣查詢(xún),適合數(shù)據(jù)量大且需要細(xì)粒度分散的場(chǎng)景(如用戶(hù)ID分桶)。2.持久化與檢查點(diǎn)的區(qū)別:-存儲(chǔ)位置:持久化默認(rèn)存儲(chǔ)在內(nèi)存/磁盤(pán)(由存儲(chǔ)級(jí)別決定);檢查點(diǎn)強(qiáng)制存儲(chǔ)在外部存儲(chǔ)(如HDFS)。-觸發(fā)方式:持久化由用戶(hù)調(diào)用cache()/persist()觸發(fā),隨RDD計(jì)算提供;檢查點(diǎn)需顯式調(diào)用checkpoint(),且需要行動(dòng)操作觸發(fā)。-容錯(cuò)性:持久化丟失后需重算父RDD;檢查點(diǎn)丟失后可直接從檢查點(diǎn)恢復(fù),無(wú)需重算。3.Flink水印的作用及提供方式:-作用:水印是事件時(shí)間的進(jìn)度標(biāo)識(shí),用于告知Flink系統(tǒng)“當(dāng)前時(shí)間已處理到T,后續(xù)不會(huì)有早于T的事件時(shí)間數(shù)據(jù)”,從而觸發(fā)窗口計(jì)算并處理延遲數(shù)據(jù)。-提供方式:-周期性水?。≒eriodicWatermark):按固定間隔(如每200ms)提供,根據(jù)當(dāng)前最大事件時(shí)間減去固定延遲(如withIdleness(Duration.ofSeconds(10)))。-斷點(diǎn)式水印(PunctuatedWatermark):基于特定事件(如接收到特殊標(biāo)記)觸發(fā)水印提供,適用于事件時(shí)間不連續(xù)的場(chǎng)景。4.HBase讀數(shù)據(jù)流程:-用戶(hù)發(fā)送讀請(qǐng)求到RegionServer,根據(jù)RowKey定位目標(biāo)Region。-RegionServer先檢查MemStore(內(nèi)存緩存)是否有匹配數(shù)據(jù),若有則返回。-若MemStore無(wú)數(shù)據(jù),掃描HFile(磁盤(pán)文件),通過(guò)布隆過(guò)濾器(BloomFilter)快速排除不包含目標(biāo)RowKey的HFile。-合并MemStore和HFile中的數(shù)據(jù)(可能涉及版本控制),返回給用戶(hù)。5.數(shù)據(jù)傾斜解決方法:-預(yù)處理數(shù)據(jù)源:對(duì)傾斜鍵(如高頻ID)添加隨機(jī)前綴,分散到多個(gè)分區(qū),聚合后去前綴(適用于GROUPBY傾斜)。-調(diào)整并行度:增加Shuffle階段的分區(qū)數(shù)(如設(shè)置spark.sql.shuffle.partitions),分散數(shù)據(jù)到更多Task(適用于數(shù)據(jù)分布不均但總量可接受場(chǎng)景)。-使用廣播JOIN:將小表廣播到所有Executor,避免Shuffle(適用于大表與小表JOIN導(dǎo)致的傾斜)。-自定義分區(qū)器:針對(duì)傾斜鍵設(shè)計(jì)特定分區(qū)策略(如按頻次分桶),均衡數(shù)據(jù)分布(適用于已知傾斜鍵的場(chǎng)景)。四、編程題1.SparkSQL代碼:```scalaimportorg.apache.spark.sql.SparkSessionobjectProvinceActiveUser{defmain(args:Array[String]):Unit={valspark=SparkSession.builder().appName("ProvinceActiveUserCount").master("yarn").getOrCreate()importspark.implicits._//讀取JSON數(shù)據(jù)valuserBehavior=spark.read.json("/user/logs/user_behavior.json")//過(guò)濾2025年1月數(shù)據(jù)(active_time為時(shí)間戳,單位毫秒)valjanData=userBehavior.filter($"active_time">=1704067200000L&&//2025-01-0100:00:00$"active_time"<1706745600000L//2025-02-0100:00:00)//分組去重統(tǒng)計(jì)janData.groupBy("province").agg(countDistinct("user_id").as("active_user_count")).orderBy("province").show()}}```2.Flink實(shí)時(shí)計(jì)算代碼(關(guān)鍵邏輯):```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數(shù)據(jù)源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());//窗口計(jì)算(滑動(dòng)窗口:5分鐘窗口,2分鐘滑動(dòng)間隔)clickStream.assignTimestampsAndWatermarks(watermarkStrategy).keyBy(AppClickEvent::getAppId).window(SlidingEventTimeWindows.of(Time.minutes(5),Time.minutes(2))).aggregate(newClickCountAgg()).print();env.execute("AppClickCountJob");}//自定義聚合函數(shù)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();//校驗(yàn)手機(jī)號(hào)格式(11位數(shù)字)if(mobileStr.matches("^1[3-9]\\d{9}$")){returnnewText(mobileStr.substring(0,3)+""+mobileStr.substring(7));}//非手機(jī)號(hào)返回原字符串returnmobile;}}```五、綜合應(yīng)用題1.電商數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì):-分層架構(gòu):-ODS層(操作數(shù)據(jù)層):存儲(chǔ)原始數(shù)據(jù),包括前端日志(JSON)和業(yè)務(wù)庫(kù)增量(通過(guò)Canal同步的Binlog),存儲(chǔ)格式為Parquet,按“dt=日期”分區(qū)(支持按天回溯)。作用:保留原始記錄,不做清洗。-DWD層(明細(xì)數(shù)據(jù)層):對(duì)ODS數(shù)據(jù)清洗(如去重、補(bǔ)全空值),關(guān)聯(lián)用戶(hù)表和商品表(通過(guò)用戶(hù)ID、商品ID),存儲(chǔ)格式為ORC(支持高效壓縮和查詢(xún)),按“dt=日期+hr=小時(shí)”分區(qū)(支持小時(shí)級(jí)明細(xì)查詢(xún))。作用:提供一致、干凈的明細(xì)數(shù)據(jù)。-DWS層(匯總數(shù)據(jù)層):基于DWD層按主題匯總(如用戶(hù)行為主題、商品主題),計(jì)算日/小時(shí)級(jí)聚合指標(biāo)(如用戶(hù)當(dāng)日點(diǎn)擊次數(shù)、商品加購(gòu)次數(shù)),存儲(chǔ)格式為Parquet,按“dt=日期”分區(qū)。作用:減少ADS層計(jì)算量,提升查詢(xún)效率。-ADS層(應(yīng)用數(shù)據(jù)層):直接對(duì)接業(yè)務(wù),存儲(chǔ)報(bào)表/BI所需的最終指標(biāo)(如日活用戶(hù)數(shù)、各品類(lèi)下單轉(zhuǎn)化率),存儲(chǔ)格式為寬表(CSV或列式存儲(chǔ)),按“dt=日期”分區(qū)。作用:支持快速查詢(xún)和可視化。-核心指標(biāo):-日活用戶(hù)數(shù)(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職建筑(建筑工程測(cè)量)試題及答案
- 2025年大三(風(fēng)景園林)園林工程施工考核題
- 2025年中職機(jī)械(機(jī)械基礎(chǔ)應(yīng)用)試題及答案
- 2025年高職旅游管理(行程規(guī)劃)試題及答案
- 2025年高職(綠色食品生產(chǎn)技術(shù))綠色食品加工階段測(cè)試試題及答案
- 臨床抗生素耐藥性與合理用藥護(hù)理
- 深度解析(2026)《GBT 18268.23-2010測(cè)量、控制和實(shí)驗(yàn)室用的電設(shè)備 電磁兼容性要求 第23部分:特殊要求 帶集成或遠(yuǎn)程信號(hào)調(diào)理變送器的試驗(yàn)配置、工作條件和性能判據(jù)》
- 深度解析(2026)《GBT 17980.30-2000農(nóng)藥 田間藥效試驗(yàn)準(zhǔn)則(一) 殺菌劑防治黃瓜白粉病》
- 深度解析(2026)《GBT 6609.18-2004氧化鋁化學(xué)分析方法和物理性能測(cè)定方法 NN-二甲基對(duì)苯二胺分光光度法測(cè)定硫酸根含量》
- 關(guān)節(jié)炎癥用藥管理規(guī)則
- 會(huì)員卡充值培訓(xùn)
- 壓瘡護(hù)理健康宣教
- 中醫(yī)科宣教課件
- 2025湖南懷化中方縣高新產(chǎn)業(yè)投資有限公司招聘10人備考題庫(kù)有完整答案詳解
- 2025年國(guó)家基本藥物培訓(xùn)考試題附答案
- 醫(yī)院餐飲服務(wù)禮儀規(guī)范
- 2026中國(guó)工業(yè)互聯(lián)網(wǎng)研究院校園招聘筆試考試參考題庫(kù)及答案解析
- 華為干部管理體系
- 2024年基本級(jí)執(zhí)法資格考試題庫(kù)及解析(200題)
- 除垢設(shè)備施工方案
- 2026中國(guó)二手醫(yī)療設(shè)備進(jìn)出口貿(mào)易現(xiàn)狀與未來(lái)發(fā)展預(yù)測(cè)報(bào)告
評(píng)論
0/150
提交評(píng)論