干货丨数据仓库工具hive面试题集锦

大数据技术成为互联网发展的核心要素之一,想从事大数据开发需要掌握多种核心技术:Hadoop、Hive、Storm、Spark、Scala等等。

这些技术知识点已经成为大数据工程师,进入职场时面试中必备的考点。今天,和大家分享一些数据仓库工具hive相关的面试题!

  1. Hive 的join有几种方式,怎么实现join的?

有3种join方式:

① 在 reduce 端进行 join,最常用的 join 方式。

Map端的主要工作:为来自不同表(文件)的 key/value 对打标签以区别不同来源的记录。然后用连接字段作为 key,其余部分和新加的标志作为 value,最后进行输出。

reduce 端的主要工作:在 reduce 端以连接字段作为 key 的分组已经完成,我们只需要在每一个分组当中将那些来源于不同文件的记录 (在 map 阶段已经打标志)分开,最后进行笛卡尔。

② 在 map 端进行 join,使用场景:一张表十分小、一张表很大。

在提交作业的时候先将小表文件放到该作业的 DistributedCache 中,然后从 DistributeCache 中取出该小表进行 join key / value 解释分割放到内存中(可以放大 Hash Map 等等容器中)。然后扫描大表,看大表中的每条记录的 join key /value 值是否能够在内存中找到相同 join key 的记录,如果有则直接输出结果。

③ SemiJoin,semijoin 就是左边连接是 reducejoin 的一种变种,在 map 端过滤掉一些数据,在网络传输过程中,只传输参与连接的数据,减少了 shuffle的网络传输量,其他和 reduce的思想是一样的。

实现:将小表中参与 join 的 key 单独抽取出来通过 DistributeCache 分发到相关节点,在 map 阶段扫描连接表,将 join key 不在内存 hashset 的纪录过滤掉,让参与 join 的纪录通过 shuffle 传输到 reduce 端进行 join,其他和 reduce join 一样。

  1. hive 内部表和外部表的区别?

内部表:

建表时会在 hdfs 创建一个表的存储目录,增加分区的时候,会将数据复制到此location下,删除数据的时候,将表的数据和元数据一起删除。

外部表:

一般会建立分区,增加分区的时候不会将数据移到此表的 location下,删除数据的时候,只删除了表的元数据信息,表的数据不会删除。

  1. 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’)

  1. Hive 有哪些方式保存元数据,各有哪些优缺点?

① 存储于 derby 数据库,此方法只能开启一个hive客户端,不推荐使用

② 存储于mysql数据库中,可以多客户端连接,推荐使用。

5、 hive 如何优化?

① join 优化,尽量将小表放在 join 的左边,如果一个表很小可以采用 mapjoin。

② 排序优化,order by 一个 reduce 效率低,distirbute by +sort by 也可以实现全局排序。

③ 使用分区,查询时可减少数据的检索,从而节省时间。

  1. hive 中的压缩格式 RCFile、 TextFile、 SequenceFile 各有什么区别?

TextFile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大;

SequenceFile:Hadoop API提供的一种二进制文件支持,使用方便,可分割,可压缩,支持三种压缩,NONE,RECORD,BLOCK;

RCFILE:是一种行列存储相结合的方式。首先,将数据按行分块,保证同一个 record 在同一个块上,避免读一个记录读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。数据加载的时候性能消耗大,但具有较好的压缩比和查询响应。

  1. hive 相对于Oracle来说有那些优点?

① 存储,hive 存储在 hdfs 上,oracle 存储在本地文件系统。

② 扩展性,hive 可以扩展到数千节点,oracle 理论上只可扩展到 100 台左右。

③ 单表存储,数据量大 hive 可以分区分桶,oracle 数据量大只能分表。

  1. Hive 的 sort by 和 order by 的区别?

order by:

会对输入数据做全局排序,只有一个 reduce,数据量较大时,很慢。

sort by:

不是全局排序,只能保证每个 reduce 有序,不能保证全局有序,需设置mapred.reduce.tasks>1。

以上就是今天为大家分享的干货内容
希望对你有所帮助

Python+大数据学习路线图详细介绍

第一阶段 大数据开发入门

学前导读:从传统关系型数据库入手,掌握数据迁移工具、BI数据可视化工具、SQL,对后续学习打下坚实基础。

1.大数据数据开发基础MySQL8.0从入门到精通

MySQL是整个IT基础课程,SQL贯穿整个IT人生,俗话说,SQL写的好,工作随便找。本课程从零到高阶全面讲解MySQL8.0,学习本课程之后可以具备基本开发所需的SQL水平。

2022最新MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程

第二阶段 大数据核心基础

学前导读:学习Linux、Hadoop、Hive,掌握大数据基础技术。

2022版大数据Hadoop入门教程
Hadoop离线是大数据生态圈的核心与基石,是整个大数据开发的入门,是为后期的Spark、Flink打下坚实基础的课程。掌握课程三部分内容:Linux、Hadoop、Hive,就可以独立的基于数据仓库实现离线数据分析的可视化报表开发。

2022最新大数据Hadoop入门视频教程,最适合零基础自学的大数据Hadoop教程

第三阶段 千亿级数仓技术

学前导读:本阶段课程以真实项目为驱动,学习离线数仓技术。

数据离线数据仓库,企业级在线教育项目实战(Hive数仓项目完整流程)
本课程会、建立集团数据仓库,统一集团数据中心,把分散的业务数据集中存储和处理 ;目从需求调研、设计、版本控制、研发、测试到落地上线,涵盖了项目的完整工序 ;掘分析海量用户行为数据,定制多维数据集合,形成数据集市,供各个场景主题使用。

大数据项目实战教程_大数据企业级离线数据仓库,在线教育项目实战(Hive数仓项目完整流程)

第四阶段 PB内存计算

学前导读:Spark官方已经在自己首页中将Python作为第一语言,在3.2版本的更新中,高亮提示内置捆绑Pandas;课程完全顺应技术社区和招聘岗位需求的趋势,全网首家加入Python on Spark的内容。

1.python入门到精通(19天全)

python基础学习课程,从搭建环境。判断语句,再到基础的数据类型,之后对函数进行学习掌握,熟悉文件操作,初步构建面向对象的编程思想,最后以一个案例带领同学进入python的编程殿堂。

全套Python教程_Python基础入门视频教程,零基础小白自学Python必备教程

2.python编程进阶从零到搭建网站

学完本课程会掌握Python高级语法、多任务编程以及网络编程。

Python高级语法进阶教程_python多任务及网络编程,从零搭建网站全套教程

3.spark3.2从基础到精通

Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。本课程基于Python语言学习Spark3.2开发,课程的讲解注重理论联系实际,高效快捷,深入浅出,让初学者也能快速掌握。让有经验的工程师也能有所收获。

Spark全套视频教程,大数据spark3.2从基础到精通,全网首套基于Python语言的spark教程

4.大数据Hive+Spark离线数仓工业项目实战

通过大数据技术架构,解决工业物联网制造行业的数据存储和分析、可视化、个性化推荐问题。一站制造项目主要基于Hive数仓分层来存储各个业务指标数据,基于sparkSQL做数据分析。核心业务涉及运营商、呼叫中心、工单、油站、仓储物料。

全网首次披露大数据Spark离线数仓工业项目实战,Hive+Spark构建企业级大数据平台

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值