版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年大数据工程师(Hive)岗位实操考核试题及答案一、单选题(每题2分,共20分)1.某电商公司ODS层订单表ods_order包含字段order_id、user_id、order_time、amount,数据量日均8000万条。现需按user_id做分桶写入DWD层,要求每个桶文件不超过256MB,已知单条记录约180Byte,最合适的分桶数应设为A.1024 B.2048 C.4096 D.8192答案:C解析:8000万×180B≈14.4GB,14.4GB÷256MB≈57,考虑压缩比0.3,实际物理大小约4.3GB,4.3GB÷256MB≈17,再乘以桶数冗余系数2.5,17×2.5≈42,取最接近2的幂次方64,但64桶单桶仍超256MB,继续放大到4096桶,单桶约3.5MB,远小于阈值,可保证未来3倍数据增长仍不过载。2.在Hive3.1.3onTez环境下,执行语句```sqlselect/+mapjoin(b)/a.user_id,sum(b.score)fromuseraleftjoinbehaviorbona.user_id=b.user_id;```user表600万条,behavior表30亿条,以下参数组合中可最大限度避免OOM的是A.tez.am.resource.memory.mb=4096,hive.mapjoin.smalltable.filesize=52428800B.tez.am.resource.memory.mb=8192,hive.mapjoin.smalltable.filesize=104857600C.tez.am.resource.memory.mb=4096,hive.mapjoin.smalltable.filesize=209715200D.tez.am.resource.memory.mb=8192,hive.mapjoin.smalltable.filesize=209715200答案:D解析:小表user约600万×50B≈300MB,需加载到内存,参数值需大于300MB,同时AM内存足够才能容纳哈希表,D两项均满足。3.对分区表ads_app_active_user(dtstring,appstring)执行```sqlaltertableads_app_active_userdroppartition(dt<'2024-01-01');```报错“Partitionspecisinvalid”,最可能原因是A.分区字段dt为string,不支持小于比较B.表为外部表,禁止删除C.存在非空子分区D.未开启动态分区严格模式答案:A解析:Hive语法规定droppartition只能使用=、in,不支持范围比较,需改写为`...wheredt<'2024-01-01'`先查出列表再循环drop。4.使用ORC写入时,以下哪种压缩策略可在CPU与IO间取得最佳平衡A.NONE B.SNAPPY C.ZSTD D.LZ4答案:C解析:ZSTD在level=3时压缩比接近GZIP,速度为SNAPPY的1.6倍,解压速度为GZIP的3倍,综合最优。5.对bucket表user_bucketed(user_id,cluster_id)clusteredby(user_id)into1024buckets执行```sqlselectcluster_id,count(*)fromuser_bucketedwhereuser_id=12345678;```执行计划中出现“SORT-ACID-READ”算子,说明A.表为事务表且开启vectorizationB.查询触发了桶裁剪C.表为ACID表且读取版本为base_000001D.查询使用了索引答案:C解析:SORT-ACID-READ仅出现在对完整ACID表读取base文件时,桶裁剪显示“BUCKET-TABLE-SCAN”。6.在Hive4.0中,使用materializedview加速,以下哪条语句可让物化视图自动重写A.设置hive.materialized.view.rewriting=trueB.创建视图时指定rewritealgorithm=bitmapC.基表与视图分区粒度完全一致D.视图定义含window函数答案:A解析:4.0版本默认关闭重写,需显式开启参数。7.对JSON格式外部表log_json,字段raw,需提取第二层嵌套key→user→id,最简写法为A.`get_json_object(raw,'$.user.id')`B.`raw:user:id`C.`json_tuple(raw,'user','id')`D.`raw['user']['id']`答案:A解析:get_json_object支持JSONPath,其余写法不支持嵌套或需多次解析。8.对Parquet表执行`selectcount(*)fromtwherecolisnull`时,以下哪项技术可直接跳过rowgroupA.字典页 B.列统计信息 C.页索引 D.布隆过滤器答案:B解析:Parquetfooter中存储每列min/max/nullcount,若nullcount=0可直接跳过整个rowgroup。9.在Ranger+Hive集成环境下,用户A拥有表select权限,列级权限仅允许访问col1,执行```sqlselectcol1,col2fromt;```结果A.返回空结果集B.抛出权限异常C.仅返回col1,col2为nullD.自动重写为selectcol1答案:B解析:Ranger列级权限为白名单,越权访问直接报错。10.对表t(colarray<int>),需统计数组元素总和,正确写法为A.`selectsum(col)fromt;`B.`selectsum(explode(col))fromt;`C.`selectsum(e)fromtlateralviewexplode(col)vase;`D.`selectsum(col[0])fromt;`答案:C解析:需先explode展开再聚合。二、多选题(每题3分,共30分)11.以下哪些场景适合使用HiveLLAPA.亚秒级BI仪表盘B.大表全量ETLC.多并发小查询D.含大量UDF的复杂脚本答案:A、C解析:LLAP常驻内存,适合低延迟、高并发,但大ETL应走传统MapReduce/Tez。12.对事务表执行update...wheredt='2026-01-01',哪些条件必须满足A.表为ORC格式B.表属性transactional=trueC.开启hive.txn.manager=DbTxnManagerD.设置pactor.initiator.on=true答案:A、B、C解析:compactorinitiator仅影响合并,非update必需。13.以下哪些函数可用于实现精确去重A.count(distinctuid)B.approx_count_distinct(uid,0.5)C.bitmap_count(to_bitmap(uid))D.hyperloglog(uid)答案:A、C解析:approx_count_distinct与hyperloglog为近似,bitmap_count在4.0支持精确。14.使用Tez执行引擎时,哪些参数可减少小文件数A.tez.grouping.min-sizeB.tez.grouping.max-sizeC.hive.merge.tezfilesD.hive.merge.smallfiles.avgsize答案:A、B、C、D解析:grouping控制mapper输入合并,merge.*控制输出合并。15.以下哪些属于Hive4.0新特性A.Iceberg表原生支持B.物化视图基于分区增量刷新C.支持JDK17D.支持ANSISQLINTERSECT语法答案:A、B、C、D解析:官方releasenote全部包含。16.对分区外表使用MSCKREPAIRTABLE,哪些情况会失败A.分区目录名与分区值大小写不一致B.目录位于不同文件系统C.目录为隐藏文件(以.开头)D.目录下无文件答案:A、C解析:MSCK按字符串匹配,大小写或隐藏目录无法识别。17.以下哪些做法可降低HiveonSpark任务GC时间A.设置spark.executor.cores=1B.使用G1GCC.提高spark.sql.adaptive.enabledD.降低hive.spark.parallel.partition.threshold答案:B、C解析:G1GC降低停顿,AQE减少冗余计算,其余与GC无关或反向。18.在Hive中实现拉链表,以下哪些字段必须A.start_dateB.end_dateC.is_currentD.create_time答案:A、B、C解析:create_time为审计字段,非逻辑必须。19.以下哪些属于列式存储优势A.只读取需要的列B.压缩比高C.支持索引下推D.支持事务回滚答案:A、B、C解析:事务回滚与存储格式无关。20.对视图v1执行explainextended,输出包含A.AbstractSyntaxTreeB.LogicalPlanC.PhysicalPlanD.TableScanOperatorDetail答案:A、B、C、D解析:extended会打印完整计划与元数据。三、判断题(每题1分,共10分)21.Hive4.0中,对Iceberg表执行delete语句会触发copy-on-write。答案:对解析:Iceberg默认copy-on-write模式。22.设置hive.exec.dynamic.partition.mode=nonstrict后,可完全不指定静态分区列。答案:对解析:nonstrict允许全动态。23.使用mapjoin时,小表必须可完全放入mapper内存,否则任务必然失败。答案:错解析:Tez可自动回退到commonjoin。24.ORC的stripesize越大,查询延迟越低。答案:错解析:过大导致读取冗余数据,延迟升高。25.Hive支持通过KafkaStorageHandler实现流式摄入。答案:对解析:Kafkahandler为官方contrib。26.对事务表执行majorcompaction会删除所有delta目录。答案:对解析:合并后生成新base,旧delta删除。27.在Hive中,clusterby与distributeby+sortby语义完全等价。答案:错解析:clusterby在同一stage完成分发与排序,distribute+sort可跨stage。28.使用CTAS创建表时,可指定press=lz4。答案:对解析:CTAS支持表属性。29.Hive的cost-basedoptimizer会统计行数,但不会统计列空值率。答案:错解析:列统计含null率。30.对分桶表执行sampling(bucket1outof32)会读取1/32数据。答案:对解析:桶采样按哈希取模。四、SQL实操题(共40分)31.电商订单表结构```sqlcreatetableods_order(order_idbigint,user_idbigint,sku_idbigint,order_timestring,pay_amountdecimal(10,2),statusstring)partitionedby(dtstring)storedasorc;```需求:计算最近30天(含当日)每用户累计消费金额、订单数、客单价,并过滤累计消费≥1000元用户,结果写入ads_user_amount_30d,分区字段dt。要求:1.使用窗口函数,避免自关联;2.单SQL完成,支持重跑;3.结果字段:user_id,total_amount,order_cnt,avg_amount,dt。答案:```sqlsethive.exec.dynamic.partition=true;sethive.exec.dynamic.partition.mode=nonstrict;withbaseas(selectuser_id,pay_amount,dtfromods_orderwheredt>=date_sub(current_date,29)andstatus='paid'),aggas(selectuser_id,sum(pay_amount)over(partitionbyuser_idrowsbetweenunboundedprecedingandcurrentrow)astotal_amount,count(*)over(partitionbyuser_idrowsbetweenunboundedprecedingandcurrentrow)asorder_cnt,dtfrombase)insertoverwritetableads_user_amount_30dpartition(dt)selectuser_id,total_amount,order_cnt,total_amount/order_cntasavg_amount,dtfromaggwheretotal_amount>=1000;```32.用户行为表```sqlcreatetabledwd_behavior(user_idbigint,event_timetimestamp,event_typestring,pagestring)storedasorc;```需求:找出连续访问≥3天的用户,连续定义为相邻两天访问间隔≤1天,允许跨零点。输出:user_id,start_date,end_date,consecutive_days。答案:```sqlwithtmpas(selectuser_id,to_date(event_time)asvisit_dayfromdwd_behaviorgroupbyuser_id,to_date(event_time)),grpas(selectuser_id,visit_day,date_sub(visit_day,row_number()over(partitionbyuser_idorderbyvisit_day))asgrp_flagfromtmp),consecas(selectuser_id,min(visit_day)asstart_date,max(visit_day)asend_date,datediff(max(visit_day),min(visit_day))+1asconsecutive_daysfromgrpgroupbyuser_id,grp_flaghavingconsecutive_days>=3)select*fromconsec;```33.拉链表更新现有拉链表user_chain(user_idbigint,namestring,phonestring,start_datestring,end_datestring,is_currentstring)每日增量表user_inc与全量字段相同,需合并增量,处理新增与变更。要求:单SQL完成,支持重跑,end_date='9999-12-31'表示当前。答案:```sqlwithincas(select*fromuser_incwheredt='${bizdate}'),oldas(select*fromuser_chainwhereis_current='Y'),new_recordas(selecti.*,'${bizdate}'asstart_date,'9999-12-31'asend_date,'Y'asis_currentfrominci),closedas(selecto.user_id,,o.phone,o.start_date,'${bizdate}'asend_date,'N'asis_currentfromoldojoininciono.user_id=i.user_idwherenot(<=>ando.phone<=>i.phone)),remainas(selecto.*fromoldoleftjoininciono.user_id=i.user_idwherei.user_idisnull)insertoverwritetableuser_chainselect*from(select*fromclosedunionallselect*fromnew_recordunionallselect*fromremain)t;```34.数组展开与聚合表app_start(user_idbigint,session_idstring,page_listarray<string>)需求:统计所有session中,page_list相邻页两两组合出现次数,如[A,B,C]产生(A,B)(B,C)。答案:```sqlwithtmpas(selectuser_id,session_id,page_list,pos,pagefromapp_startlateralviewposexplode(page_list)vaspos,page),pairas(selectuser_id,session_id,pageasp1,lead(page)over(partitionbysession_idorderbypos)asp2fromtmp)selectp1,p2,count(*)ascntfrompairwherep2isnotnullgroupbyp1,p2;```35.多列转行表score(user_idbigint,chineseint,mathint,englishint)需求:输出user_id,subject,score三行,subject取值语文、数学、英语。答案:```sqlselectuser_id,'语文'assubject,chineseasscorefromscoreunionallselectuser_id,'数学',mathfromscoreunionallselectuser_id,'英语',englishfromscore;```五、性能调优综合题(共30分)36.背景:事实表fct_sale(dt,sku_id,shop_id,sale_qty,sale_amt)日均8亿条,分区dt,存储为ORC,压缩ZSTD,bucket8192clusteredbysku_id。维度表dim_shop(shop_id,shop_name,city_id)50万条。需求:```sqlselectt.city_id,sum(t.sale_amt)asamtfrom(selects.shop_id,s.sale_amt,d.city_idfromfct_salesjoindim_shopdons.shop_id=d.shop_idwheres.dtbetween'2026-01-01'and'2026-01-07')tgroupbyt.city_id;```现状:任务耗时1.2小时,数据倾斜,某city_id占比45%,单reducer运行90分钟。要求:给出完整调优步骤,含参数、SQL改写、预期效果。答案:1.开启CBO与统计信息```sqlanalyzetablefct_salepartition(dt)computestatisticsforcolumnsshop_id;analyzetabledim_shopcomputestatistics;sethive.cbo.enable=true;setp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石方开挖作业噪声控制方案
- 城区供水能力综合提升项目施工方案
- 工程质量信用体系建设方案
- 房屋防火性能提升方案
- 储备粮库节能照明系统改造方案
- 消防设备应急维修方案
- 连续墙体保温设计方案
- 2026年生态城市建设中绿色建材的作用考核
- 2026年数据安全保护与加密技术应用测试
- 消防泵房设计及设备选型方案
- 2026四川凉山州雷波县粮油贸易总公司面向社会招聘6人备考题库及答案详解一套
- 四川省攀枝花市2025-2026学年八年级上学期期末数学检测(含答案)
- 劳动人事法律培训课件
- 2026中国电信四川公用信息产业有限责任公司社会成熟人才招聘备考题库参考答案详解
- 清真生产过程管控制度
- 途虎养车安全培训课件
- 2025-2026学年人教版(新教材)小学数学二年级下册(全册)教学设计(附教材目录P161)
- 刷单协议书合同范本
- 内科学总论小儿遗传代谢病课件
- 2026小红书平台营销通案
- 品牌设计报价方案
评论
0/150
提交评论