大数据面试题锦集 | 数据仓库工具HIVE篇
mhr18 2024-10-01 12:19 17 浏览 0 评论
文末领取【MySQL练习题+答案解析】
进入DATE时代,大数据技术成为互联网发展的核心要素之一。与此同时大数据开发工程师的薪资也成为行业内高薪的代表。
想从事大数据开发需要掌握多种核心技术:Hadoop、Hive、Storm、Spark、Scala等等。而且这些技术知识点已经成为大数据工程师进入职场时面试中必备的考点。这里主要和大家分享一下数据仓库工具hive相关的面试题!
01
Hive中join的几种方式,怎么实现join的?
有3 种 join 方式:
1. 在reduce端进行join,最常用的join方式。
Map端的主要工作:为来自不同表(文件)的key/value对打标签以区别不同来源的记录。然后用连接字段作为 key,其余部分和新加的标志作为value,最后进行输出。
reduce端的主要工作:在reduce端以连接字段作为key的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录 (在map阶段已经打标志)分开,最后进行笛卡尔。
2.在map端进行join,使用场景
一张表十分小、一张表很大。在提交作业的时候先将小表文件放到该作业的DistributedCache中,然后从DistributeCache中取出该小表进行join key/value解释分割放到内存中(可以放大 Hash Map 等等容器中)。然后扫描大表,看大表中的每条记录的join key/value值是否能够在内存中找到相同join key的记录,如果有则直接输出结果。
3. SemiJoin,semijoin:左边连接是reducejoin的一种变种
在map端过滤掉一些数据,在网络传输过程中,只传输参与连接的数据,减少了 shuffle的网络传输量,其他和 reduce的思想是一样的。
实现:将小表中参与join的key单独抽取出来通过DistributeCache 分发到相关节点,在map阶段扫描连接表,将join key不在内存hashset的纪录过滤掉,让参与join的纪录通过shuffle传输到reduce端进行join,其他和reduce join一样。
02 hive内部表和外部表的区别?
内部表:建表时会在 hdfs 创建一个表的存储目录,增加分区的时候,会将数据复制到此location下,删除数据的时候,将表的数据和元数据一起删除。
外部表:一般会建立分区,增加分区的时候不会将数据移到此表的location下,删除数据的时候,只删除了表的元数据信息,表的数据不会删除。
03 hive是如何实现分区的?
建表语句:create table tablename (id) partitioned by (dt string)
增加分区:alter table tablenname add partition (dt = ‘2016-03-06’)
删除分区:alter table tablename drop partition (dt = ‘2016-03-06’)
04 Hive保存元数据的方式,各有哪些优缺点
1.存储于derby数据库,此方法只能开启一个hive客户端,不推荐使用
2.存储于mysql数据库中,可以多客户端连接,推荐使用。
05 hive如何优化?
1. join优化:尽量将小表放在 join 的左边,如果一个表很小可以采用 mapjoin。
2. 排序优化:order by 一个reduce效率低,distirbute by+sort by也可以实现全局排序。
3. 使用分区:查询时可减少数据的检索,从而节省时间。
06
压缩格式RCFile、TextFile、SequenceFile各有什么区别?
TextFile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大
SequenceFile:Hadoop API提供的一种二进制文件支持,使用方便,可分割,可压缩,支持三种压缩,NONE,RECORD,BLOCK。
RCFILE :一种行列存储相结合的方式。首先,将数据按行分块,保证同一个 record 在同一个块上,避免读一个记录读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。数据加载的时候性能消耗大,但具有较好的压缩比和查询响应。
07 hive相对于Oracle来说有哪些优点
1. 存储,hive存储在hdfs上,oracle存储在本地文件系统。
2. 扩展性,hive可以扩展到数千节点,oracle理论上只可扩展到100台左右。
3. 单表存储,数据量大hive可以分区分桶,oracle数据量大只能分表。
08 Hive的sort by和order by的区别
order by:会对输入数据做全局排序,只有一个reduce,数据量较大时,很慢。
sort by:不是全局排序,只能保证每个reduce有序,不能保证全局有序,需设置mapred.reduce.tasks>1。
End.
作者:枫调
来源:博学谷资讯
本文为转载分享,如侵权请联系后台删除
长按下方海报领取【MySQL练习题+答案解析】
相关推荐
- SQL_TOP(显示数据条数)(sqlserver显示查询的行数)
-
(8)SELECT(9)DISTINCT(11)<topNum><selectlist>(1)FROM[left_table](3)<join_type>...
- php搭建小型部门网站(php构建网站)
-
熟悉前端html,js,css,后端熟悉php,python,java只能称得上一般,还有很多坑待踩。鉴于所学很杂,决定利用对业务的熟悉来搞一个部门网站来简化大家的工作流程。初步设计方案后端用p...
- 会SQL语句,就能快速开放你的数据接口API
-
会SQL,就能开放你的数据API接口如果你是非技术开发工程,不熟悉Java、PHP、Python、Golang这些后端的编程语言,但熟悉MySQL、Oracle、SQLServer、PostgreS...
- 推荐8款好用的Web版SQL工具,建议收藏
-
你使用过WebSQL版的SQL工具吗?开发人员在更换设备或重新安装系统时,通常需要花费大量时间来重新配置环境,既繁琐又浪费时间。使用Web版SQL开发工具可以完美解决这个问题!它支持远程访问,无需安...
- 黑客不会告诉你的10个Linux渗透测试工具
-
凌晨两点,我盯着目标企业的边界防火墙日志——所有端口都被封禁,IDS(入侵检测系统)警报安静得诡异。正当我以为这是一场“不可能完成”的渗透测试时,搭档发来一条消息:“试试LinPEAS,你可能会发现惊...
- 拉里·埃里森:数据库之父的传奇人生与创新之路
-
在现代科技的浪潮中,有一位企业家以其卓越的技术洞察力和创新精神,彻底改变了数据存储和管理的格局——他就是拉里·埃里森(LarryEllison)。作为甲骨文公司(Oracle)的创始人之一,埃里森不...
- 经典技术干货分享:JVM内存模型和垃圾回收机制
-
来源:全栈工程师小辉JVM内存模型根据Java虚拟机规范,Java数据区域分为五大数据区域。其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈和程序计数器则为线程私有的。有的博客称方法区是永久代...
- 让我来告诉你:最重要的 JVM 参数总结
-
1.概述在本篇文章中,你将掌握最常用的JVM参数配置。如果对于下面提到了一些概念比如堆、#2.堆内存相关Java虚拟机所管理的内存中最大的一块,Java堆是所有线程共享的一块内存区域,在虚拟机...
- 说一下 JVM 的内存布局和运行原理?
-
JVM(JavaVirtualMachine,Java虚拟机)顾名思义就是用来执行Java程序的“虚拟主机”,实际的工作是将编译的class代码(字节码)翻译成底层操作系统可以运行的机器...
- 这些不可不知的JVM知识,我都用思维导图整理好了
-
VM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。先上图:JVM必备知识1、JVM基本概念1.1、JVM是什么JVM的全称是「JavaVirtualMachi...
- 认识Kotlin_了解Kotlin和JVM虚拟机关系_重要性_更强大的跨平台
-
1.谷歌支持Kotlin作为android第一开发语言,因为java是已经被oracle收购了,可能会对Google收费.2.可以看到java语言写的android程序,实际上回编译成字节码,在jvm...
- 美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃
-
网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致JVM崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨线程崩溃,进程一定...
- 一篇文章掌握整个JVM,JVM超详细解析!!!
-
不懂JVM看完这一篇文章你就会非常懂了,文章很长,非常详细!!!先想想一些问题1我们开发人员编写的Java代码是怎么让电脑认识的首先先了解电脑是二进制的系统,他只认识01010101比如我们经常要...
- Java反射机制最全详解(图文全面总结)
-
Java反射是各种框架以及中间件实现的基石,也是大厂面试重点考察内容,下面全面来详解Java反射机制@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。Java反...
- OCP 专家认证培训- 数据库专业人士的进阶阶梯
-
认证简介OCP即Oracle数据库认证专家,是Oracle公司的Oracle数据库DBA(DatabaseAdministrator数据库管理员)认证课程。通过该认证,表明持证人能...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)