Hive 知识点八股文记录 ——(三)区别和原理

70道Hive面试八股文(答案、分析和深入提问)整理 每种保存元数据的方式都有其适用场景和特点,用户可以根据数据规模、并发需求、性能要求及技术栈来选择合适的元数据存储方案。在生产环境中,通常推荐使用外部的关系型数据库,以提高整体的性能与稳定性。静态分区适合固定、少量的分区场景,使用上更简单,但灵活性不足。动态分区适合频繁变动或数据量大的场景,具备灵活性,但需要额外的配置与处理。选择哪种分区方式,应根据具体应用场景和数据特性来决定。:每一行都有唯一的编号。RANK():相同的值共享相同的排名,后续排名跳过相应数量。 阅读详情

区别

order by , sort by , distribute by , cluster by 的区别

  • order by:全局排序,只有一个reduce(多个reduce无法保证全局有序
  • sort by:非全局排序,reduce前进行排序。
    • 因此 mapped. reduce. tasks >1, sort by只会保证每个 reducer的输出有序,并不保证全局有序
    • 实现全局排序: 先用 sortby保证每个 reducer输出有序,再order by归并reduce
  • distribute by: 在map端拆分数据给 reduce端. hive 根据distribute by的列,对reduce个数分发,默认hash算法
    • (sort by为每个reduce产生排序文件,但有时候你需要空值某个行到特定的reduce)
    • hive规定distribute by 语句要写在sort by语句之前,两者配合使用
  • cluster by:当distribute by 和 sort by 所指定的字段相同时,即可以使用cluster by(列只能是升序,不能指定asc和desc

hive分隔符

建表指定分隔符

CREATE TABLE mytable (col1 STRING, col2 STRING, col3 STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

加载数据指定分隔符

LOAD DATA LOCAL INPATH '/path/to/data.txt' INTO TABLE mytable
FIELDS TERMINATED BY ',';

分区分桶

概念

分区分桶
大表存储的时候根据不同数据作为目录来存储。
一级目录:单分区表;多级目录:多分区表
非最终分区表不能存数据
hive表按hash值分为多个桶,让数据均匀分布到多个桶中提高查询性能。

他们并不互斥,存储格式有差别

作用?

分区分桶
数据分为小块,提高查询性能提高Join查询的效率,在一份数据会被经常用来做连接查询的时候建立分桶表,分桶字段就是连接字段

两者一起使用的结果

  • 使取样(sampling)更高效,只取一部分数据集进行测试
  • 分桶对比分区可粒度更细
  • 分区不是按照真实数据的列,而是指定的伪列,分桶则是按照数据列

row_number 中 distribute by 和 partition by 的区别

  • distribute by用于指定数据在Reducer上的分布方式,确保具有相同值的行被分发到同一个Reducer上。
  • partition by用于指定在计算row_number()时要分区的列,将数据划分为更小的块,提高计算效率。 —— 按列分区后,每个列内再计算行号

partition by 只能和 order by 组合使用

distribute by 只能和 sort by 使用

left semi join 和 left join 区别

left join:展示左表和右表的所有字段,如果右表没有匹配的记录,右表的字段值为NULL。

left semi join:仅展示A表与B表匹配的记录,并且只展示A表字段,因为left semi join只传递表的join key给Map阶段(

A表:

idname
1Alice
2Bob
3Carol

B表:

idage
225
330
435
  1. 左连接(left join)示例:
SELECT A.id, A.name, B.age
FROM A
LEFT JOIN B ON A.id = B.id;

结果:

idnameage
1AliceNULL
2Bob25
3Carol30
  1. 左半连接(left semi join)示例:
SELECT A.id, A.name
FROM A
LEFT SEMI JOIN B ON A.id = B.id;

结果:

idname
2Bob
3Carol

原理

group by 排序的原因

  • 分组聚合:GROUP BY语句通常与聚合函数(如SUM、COUNT、AVG等)一起使用,用于对数据进行分组并计算聚合结果
  • 归并操作:通过MapReduce或Tez任务来执行的。任务中,数据需要在不同的节点之间进行归并操作,以将相同键值的数据合并在一起。GROUP BY字段进行排序可以提高合并效率
  • 优化查询性能:相同的键值的数据会被连续地存储在磁盘上,这样可以减少磁盘I/O的次数,提高查询的效率

group by 默认全局,可以用DISTRIBUTE BY和SORT BY语句来实现分布式排序,将排序的负载分散到不同的节点上

mapjoin

hint提示 /*+ mapjoin(table) */可以执行mapjoin

  • 小表数据存入内存,生成hash表,key为hash值,value为数据
  • mapper阶段,大表记录计算hash值匹配小表,匹配成功后输出到reduce
  • 连接列的值,将所有匹配记录合并成一条记录输出结果

避免大表全盘扫描,磁盘读写,提高查询性能

大数据秋招面试核心八股文精讲(持续更新) 本文深入解析大数据秋招面试中的Hive核心八股文,涵盖内部表与外部表实战区别、分区与分桶优化、Hive执行原理及性能调优技巧。特别针对数据倾斜和小文件合并等常见问题提供解决方案,帮助求职者高效备战大数据面试。 阅读详情

相关推荐

大数据开发八股文总结——Hadoop

大数据开发学习总结——Hadoop

化身孤岛的鲸o的博客 7941

Hive中order by,sort by,distribute by,cluster by的区别以及row_number() over函数的基本用法

一.order by: order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间。 二.sort by: sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只...

qq_43350697的博客 4868

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 526

row_number() over (partition by 分组列 order by 排序列 desc)、row_number() 函数、分组排序函数

row_number() over (partition by 分组列 order by 排序列 desc)、row_number() 函数、分组排序函数

weixin_49114503的博客 2万+

揭秘Outlook/QQ邮箱伪造:如何利用Unicode编码绕过SPF检测

本文深入剖析了利用Unicode编码进行邮件显示名伪造的攻击手法,揭示了攻击者如何通过插入零宽字符等特殊编码绕过SPF检测,使邮件在Outlook、QQ邮箱等客户端中看似来自可信发件人。文章通过Python代码示例演示了伪造过程,并提供了从用户自查到管理员部署DMARC策略的多层次防御建议。

weixin_29063035的博客 334

SFT看这一篇就够了!万字长文:监督微调(Supervised Fine-Tuning, SFT)技术全解析【从理论到实战】

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。分享AI算法干货、技术心得。欢迎关注,一起探索技术的无限可能!

大F子的智能小课 712

hive的四种排序以及窗口函数的使用

hive的四种排序以及窗口函数的使用

u011250186的博客 1226

TBOX电源方案的详细讲解与分析

输入保护电路是确保车载电子系统稳定性的关键。通过合理选择TVS二极管、保险丝和浪涌抑制器等元器件,能够有效防止来自电源系统的瞬态过电压、浪涌和过流问题,保护后续电路免受损害。针对不同的电源环境和应用场景,可以通过提升功率、优化热管理以及选择高效元器件来进一步提高系统的保护能力和可靠性。

weixin_43199439的博客 1075

大数据分而治之(分桶表)的应用

关于大数据场景分而治之思想的一些实践方案,包括分桶表,distribute by+sort by以及row_number的一些特殊使用场景,以及什么时候该如何选择

m0_70949976的博客 506

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs. Replicate the

Debezium报错处理系列之第112篇:Cannot replicate because the master purged required binary logs.

zhengzaifeidelushang的博客 726

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

k8291121的博客 1100

row_number() OVER(PARTITION BY)

row_number()排序函数 统计每个部门薪资最高的员工信息(同一个部门的员工按照薪资进行降序排序) 第一种写法:row_number() over(partition by 一个或多个分组列 order by 一个或多个排序列 asc/desc) as 别名 //如果不写asc/desc的话,默认为asc 第二种写法:row_number() over...

あずにゃん梓喵的博客 14万+

OceanBase数据库:从入门到精通全栈教程目录(含架构解析、性能调优与实战案例)

《OceanBase数据库专栏》全面解析蚂蚁集团自主研发的分布式关系型数据库,涵盖从基础到高级的完整知识体系。专栏分为入门篇、原理篇、使用篇等七大模块,包含35+篇深度文章,详细讲解OceanBase的高可用架构、Paxos协议、LSM树存储引擎等核心技术。特别提供MySQL/Oracle迁移指南、金融/电商场景实践案例,以及性能调优、运维监控等实战内容。适合开发者、DBA及架构师快速掌握OceanBase的核心特性和行业应用,助力企业实现数据库分布式转型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 983

Hive 知识点八股文记录 ——(一)特性

CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor)默认创建内部表,创建外部表,需要加上external关键字修饰,还可通过location指定Hive仓库的路径。两者基本相同,但sql解析器不一样(spark做了较多优化)数据处理都用hql完成的话,选择内部表。

JamSlade的博客 1187

河洛理数【陈抟】先天命卦大运

首先我们把前文提及的天干和地支进行上下划分,那么每一年的年份都是使用一天干和一地支进行组合,即如上的甲子、癸亥,那么下一年就是天干和地支都进行顺延一位进行组合,如甲子年下一年就是乙丑年,但是由于天干是十个、地支有十二个,所以要遍历一遍的话,就正好是 60 年。1924 年 ~ 1983 年(中元) 1984 年 ~ 2043 年(下元) 2044 年 ~ 2103 年(上元)2、找到卦中第一个(从下往上,也就是初爻、二到五爻、上爻)对应时辰的阴阳爻。5、也就是所属的元堂爻。

Daniel专栏 2073

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大数据面试八股文之 hive 篇

网上大数据开发工程师的面试题相对较少,且比较杂乱分散,有的甚至没有答案。为了广大数据人着想,总结了大数据面试题hive篇,并给出答案,希望能有所帮助。

大数据的奇妙冒险 2450

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Hive 与mysql区别

视图是一种使用查询语句定义的虚拟表,是数据的一种逻辑结构,创建视图时不会把视图存储到磁盘上,定义视图的查询语句只有在执行视图的语句时才会被执行。不要把 Hive 想的多么神秘,你可以用简单的load方式将数据加载到创建的表里,也可以直接用hadoop指令将数据放入到指定目录,这两种方式都可以直接让你通过SQL查询到数据。数据分布不平衡,某些地方特别多,某些地方又特别少,导致的在处理数据的时候,有些很快就处理完了,而有些又迟迟未能处理完,导致整体任务最终迟迟无法完成,这种现象就是数据倾斜。

chuixue24的博客 3648

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hive八股文最全总结 (附经典面试高频考点)

Hive 是构建在 Hadoop 之上的一个数据仓库工具,提供类 SQL 的查询语言 HQL。它将结构化数据文件映射为表,可用于查询 HDFS 或兼容系统(如 HBase、MapR-FS、Cassandra)中的数据。

YTHX516的博客 693

2024.1.5 Hadoop阶段,各组件工作原理,八股文,面试题

leader宕机后启动: 每一个leader当老大的时候,都会产生新纪元epoch,且每次操作完节点数据都会更新事务id(高32位_低32位) ,当leader宕机后,剩下的follower就会综合考虑几个因素选出最新的leader,先比较最后一次更新数据事务id(高32位_低32位),谁的事务id最大,谁就当选leader,如果更新数据的事务id都相同的情况下,就需要再次考虑myid,谁的myid大,谁就当选leader。那么排序后的结果是、、。如果没有,直接输出到文件中。

白白的wj的博客 1729

大数据面试题(全)【八股文】

链接:https://pan.baidu.com/s/1nK85osoUB5F1OrttZNWiig?pwd=ouh8提取码:ouh8–来自百度网盘超级会员V3的分享添加小奥博士 vx: AI_xiaoao一起学习交流Python学习!

Dalu_1226的博客 2240

大数据岗位秋招面试八股文总结(不定时更新)

第一次是局部聚合,先给每个key都打上一个随机数,比如10以内的随机数,此时原先一样的key就变成不一样的了,比如(hello, 1) (hello, 1) (hello, 1) (hello, 1),就会变成(1_hello, 1) (1_hello, 1) (2_hello, 1) (2_hello, 1)。然后将各个key的前缀给去掉,就会变成(hello,2)(hello,2),再次进行全局聚合操作,就可以得到最终结果了,比如(hello, 4)。分区表按照分区字段的值进行分割,容易产生数据倾斜。

My Struggle 4462

数仓八股文

包括维度编码,字段类型,创建人,创建时间,状态等)、业务过程、指标(包含指标名称,指标编码,业务口径,指标类型,责任人,创建时间,状态,sql等),安全等级,计算逻辑等的规范化定义,用于更好地管理和使用数据。淘宝交易订单的流转主要包括 下单,支付,发货,完成这四个业务过程,在事务统计中,只关注了下单、支付、完成这三个业务过程,而在统计事件时间间隔的需求中,卖家发货也是关键环节。星座模型:这也是星型模型的衍生而来的,不同的是 基于多张事实表,并且共享维度信息,也就是维度表之间可能会连在一起。

qq_39436781的博客 1381

高频面试八股文用法篇(二) hive中几种排序类型区别

hive中order by, sort by, distribute by, cluster by 区别

我的E家 635

Hive初识功能架构

hadoop,spark,kafka交流群:224209501kafka源码,hbase源码,spark源码请关注浪尖公众号本节讲述的主要内容为:1) Hive 能做什么,与MapReduce相比优势在哪里(对于开发者) 2) 为什么说Hive是Hadoop 数据仓库,从【数据存储和分析】方面理解 3) Hive 架构,分为三个部分来理解,最好通过画图理解1,hive PK mapredu

逐波与逆流 2530

高频面试八股文用法篇(一) hive窗口函数

hive中的窗口函数是什么

我的E家 1085

Hive 高频考点讲解

因为申请较晚,本公众号没留言,想交流的欢迎添加私人微信,一起相互吹捧,共同进步。1 HiveHive 是 FaceBook 开源的一款基于 Hadoop 数据仓库工具,它可以将结构化的数据...

sowhat 809
上一篇: Note of CLEAN CODE chapter 7 - Error Handling
下一篇: React 个人笔记 Hooks编程
JamSlade
博客等级 码龄6年 1万+粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值