Hive 经典笔试真题(含详细答案·企业版)_第1页
Hive 经典笔试真题(含详细答案·企业版)_第2页
Hive 经典笔试真题(含详细答案·企业版)_第3页
Hive 经典笔试真题(含详细答案·企业版)_第4页
Hive 经典笔试真题(含详细答案·企业版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hive经典笔试真题(含详细答案·企业版)说明:整套题目为互联网数仓、大数据开发岗位高频笔试原题,覆盖基础、SQL实操、底层原理、优化、问题排查,答案贴合实际工作场景,无书面化空话。一、基础概念题(简答题)1.简述Hive的工作原理,以及Hive和MySQL的核心区别?参考答案:Hive本质是数据仓库工具,不是数据库。它本身不存储数据、不计算数据,只是一个SQL解析和转换工具。工作流程:用户编写HiveSQL→Hive解析、编译、优化→翻译成MapReduce/Spark/Tez任务→提交YARN执行→读取HDFS数据、计算后返回结果。核心区别:存储层面:MySQL数据存在本地磁盘;Hive数据存储在HDFS,元数据(表结构、字段信息)存在MySQL。计算层面:MySQL本地实时计算;Hive依赖分布式计算引擎,离线批量计算。延迟性:MySQL低延迟、支持实时增删改查;Hive高延迟,适合海量数据离线分析,不适合实时查询。事务支持:MySQL完整支持事务、行级锁;Hive早期无事务,新版本仅支持有限事务,基本不用于事务场景。适用场景:MySQL用于业务联机交易;Hive用于大数据离线统计、数仓建模、报表分析。2.Hive内部表和外部表的区别?实际工作中为什么优先用外部表?参考答案:内部表(管理表):Hive全权管理表数据和元数据,删除表时,元数据+HDFS原始数据全部删除。外部表:仅由Hive管理元数据,数据存放在指定HDFS路径,删除表时,只删元数据,原始数据保留。工作中优先用外部表的原因:数仓数据是核心资产,误删表不会丢失原始数据,安全性极高;且一份HDFS数据可以被多个Hive外部表关联使用,灵活复用,适配数仓分层架构。3.Hive分区和分桶的作用、区别、适用场景?参考答案:分区:按照指定字段(时间、地区等)将数据划分为不同HDFS目录,是目录级拆分。作用:缩小查询扫描范围,避免全表扫描,大幅提升查询效率,最常用的是按天分区(dt)。分桶:按照字段哈希取模,将数据拆分到固定数量的文件中,是文件级拆分。作用:优化join查询、抽样查询,提升大表关联效率。核心区别:分区数可自定义、不固定;分桶数建表时固定,不可随意修改。分区侧重过滤数据;分桶侧重数据均匀打散、优化关联。日常90%场景用分区,分桶仅用于大表join、数据抽样场景。4.Hive四种数据加载方式及特点?参考答案:load加载:本地/HDFS文件导入表,移动文件不复制,无解析校验,速度最快。insert插入:通过查询结果写入表,支持动态分区,日常数仓分层主要使用该方式。createtable...asselect:建表同时导入数据,会重写数据、生成新文件,无法保留原表结构属性。外部挂载:先有HDFS数据,再建外部表关联数据,零数据迁移,适配历史数据复用场景。二、SQL实操题(高频笔试真题)通用测试表(所有题目共用):用户行为表user_behavior(dt分区表,按天分区)字段:dt(日期)、user_id(用户ID)、goods_id(商品ID)、behavior(行为类型:click/collect/buy/cart)、city(城市)真题1:统计每日各行为类型的用户数、行为次数(去重用户)要求:按日期、行为分组,UV去重,PV统计总次数参考答案SQL:sql

SELECT

dt,

behavior,

COUNT(DISTINCTuser_id)ASuser_uv,--去重用户数

COUNT(*)ASbehavior_pv--行为总次数

FROMuser_behavior

GROUPBYdt,behavior

ORDERBYdt,behavior;真题2:找出每日【点击过商品但未下单】的用户数解题思路:先筛选点击用户、下单用户,通过左连接匹配,筛选出无下单记录的用户参考答案SQL:sql

SELECT

dt,

COUNT(DISTINCTa.user_id)ASno_buy_user_num

FROM

(SELECTDISTINCTdt,user_idFROMuser_behaviorWHEREbehavior='click')a

LEFTJOIN

(SELECTDISTINCTdt,user_idFROMuser_behaviorWHEREbehavior='buy')b

ONa.dt=b.dtANDa.user_id=b.user_id

WHEREb.user_idISNULL

GROUPBYdt;真题3:连续活跃用户统计(经典笔试难点)要求:统计每个用户的连续活跃天数,输出用户ID、最大连续活跃天数解题思路:窗口函数经典用法,日期排序后做日期差值分组,差值不变即为连续日期参考答案SQL:sql

WITHuser_activeAS(

--先去重用户每日活跃记录

SELECTDISTINCTuser_id,dtFROMuser_behavior

),

user_rankAS(

SELECT

user_id,

dt,

--按用户分组对日期排序

ROW_NUMBER()OVER(PARTITIONBYuser_idORDERBYdt)ASrn,

--日期减排序序号,连续日期差值固定

DATE_SUB(dt,INTERVALROW_NUMBER()OVER(PARTITIONBYuser_idORDERBYdt)DAY)ASgroup_key

FROMuser_active

)

SELECT

user_id,

COUNT(*)ASmax_continuous_days

FROMuser_rank

GROUPBYuser_id,group_key

--取每个用户最大连续天数

QUALIFYRANK()OVER(PARTITIONBYuser_idORDERBYCOUNT(*)DESC)=1;真题4:行转列、列转行笔试高频题行转列需求:按日期汇总,将四种行为的UV分别作为字段展示sql

SELECT

dt,

COUNT(DISTINCTCASEWHENbehavior='click'THENuser_idEND)ASclick_uv,

COUNT(DISTINCTCASEWHENbehavior='buy'THENuser_idEND)ASbuy_uv,

COUNT(DISTINCTCASEWHENbehavior='cart'THENuser_idEND)AScart_uv,

COUNT(DISTINCTCASEWHENbehavior='collect'THENuser_idEND)AScollect_uv

FROMuser_behavior

GROUPBYdt;三、函数笔试题(易错点)1.Hive中row_number、rank、dense_rank的区别?举例说明参考答案:row_number():连续不重复排名,1、2、3、4,无并列,日常取TopN首选rank():并列排名,跳号,1、2、2、4,适合排名榜单场景dense_rank():并列排名,不跳号,1、2、2、3笔试高频考点:取分组最新一条数据,必须用row_number,另外两个会出现并列数据,导致结果重复。2.HiveNULL和空字符串的区别?笔试易错坑参考答案:NULL代表未知值,空字符串''代表已知的空值判断语法不同:NULL用isnull/isnotnull;空字符串用=''/!=''聚合结果不同:count(*)统计所有行;count(字段)不统计NULL值,但统计空字符串join匹配规则:Hive中NULL!=NULL,两个NULL无法关联匹配,空字符串可以正常匹配四、优化与问题排查题(面试笔试重点)1.Hive数据倾斜的现象、原因、解决方案?参考答案:现象:任务大部分reduce任务快速跑完,个别reduce任务卡死、耗时极长,整体任务超时失败。常见原因:join时key大量为空/为0分组字段某一个值数据量极大冷热数据不均,个别key数据暴涨解决方案(工作常用):空值预处理:将null/空字符串随机赋值打散,避免扎堆开启倾斜参数:sethive.groupby.skewindata=true;大表小表join使用mapjoin,跳过reduce阶段拆分倾斜key,单独计算后合并结果2.MapJoin的使用场景和原理?参考答案:原理:将小表数据加载到内存,在map阶段直接完成关联,无需reduce阶段,彻底规避join数据倾斜。适用场景:一大一小表关联,小表数据量小(通常几百M以内)。笔试考点:多张大表join不能用mapjoin,会导致内存溢出。3.Hive查询很慢的常见原因及优化手段?参考答案:常见原因:未分区过滤、全表扫描、数据倾斜、大量distinct、小文件过多、未开启并行执行。优化手段:强制分区过滤,禁止全表查询用groupby代替distinct去重,效率更高大表关联使用分桶表、mapjoin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论