在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
进入DATE时代,大数据技术成为互联网发展的核心要素之一。与此同时大数据开发工程师的薪资也成为行业内高薪的代表。想从事大数据开发需要掌握多种核心技术:Hadoop、Hive、Storm、Spark、Scala等等。而且这些技术知识点已经成为大数据工程师进入职场时面试中必备的考点。这里主要和大家分享一下数据仓库工具hive相关的面试题!
1、 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 一样。
2、hive 内部表和外部表的区别?
内部表:建表时会在 hdfs 创建一个表的存储目录,增加分区的时候,会将数据复制到此location下,删除数据的时候,将表的数据和元数据一起删除。
外部表:一般会建立分区,增加分区的时候不会将数据移到此表的 location下,删除数据的时候,只删除了表的元数据信息,表的数据不会删除。
3、 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’)
4、 Hive 有哪些方式保存元数据,各有哪些优缺点。
1)存储于 derby 数据库,此方法只能开启一个hive客户端,不推荐使用
2)存储于mysql数据库中,可以多客户端连接,推荐使用。
5、 hive 如何优化?
1)join 优化,尽量将小表放在 join 的左边,如果一个表很小可以采用 mapjoin。
2)排序优化,order by 一个 reduce 效率低,distirbute by +sort by 也可以实现全局排序。
3)使用分区,查询时可减少数据的检索,从而节省时间。
6、 hive 中的压缩格式 RCFile、 TextFile、 SequenceFile 各有什么区别?
TextFile:默认格式,数据不做压缩,磁盘开销大,数据解析开销大
SequenceFile:Hadoop API提供的一种二进制文件支持,使用方便,可分割,可压缩,支持三种压缩,NONE,RECORD,BLOCK。
RCFILE 是一种行列存储相结合的方式。首先,将数据按行分块,保证同一个 record 在同一个块上,避免读一个记录读取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。数据加载的时候性能消耗大,但具有较好的压缩比和查询响应。
7、 hive 相对于Oracle来说有那些优点?
1)存储,hive 存储在 hdfs 上,oracle 存储在本地文件系统。
2)扩展性,hive 可以扩展到数千节点,oracle 理论上只可扩展到 100 台左右。
3)单表存储,数据量大 hive 可以分区分桶,oracle 数据量大只能分表。
8、 Hive 的 sort by 和 order by 的区别!
order by 会对输入数据做全局排序,只有一个 reduce,数据量较大时,很慢。
sort by 不是全局排序,只能保证每个 reduce 有序,不能保证全局有序,需设置mapred.reduce.tasks>1。
9、博学谷大数据课程亮点有哪些?
1、新增当下大数据应用技术热点,使课程更全涵盖大数据体系中的技术点,包括但不限于Linux、Zookeeper、Hadoop、Yam、Redis、HDFS、MapReduce、Hive、lmpala、Hue、Oozie、Storm、Kafka、Spark、Soark RDD、Spark SQL、Soark Streaming、Sqoop、Flume、CDH、Scala、Hbase、Flink、机器学习等,将离线数据分析、实时数据分析和内存数据计算中的技术点全面覆盖。
2、将晦涩难懂的理论一通俗易懂的方式进行讲解,然后通过深入分析源码让学员深入理解其内在原理,在照顾基础薄弱学习者的同时又融入核心技术点加以实战,夯实了基础又快速储备了丰富的实战经验。
3、此课程涵盖网站点击流日志分析系统、统一监控告警系统、用户画像、Flume 实战案例、Azkaban实战案例、Hbase实战案例和Hbase整合读写数据等源于企业中的真实项目和案例,以项目/案例驱动教学,将真实实例贯穿到知识点中,学中练、练中学、及时训练、及时强化,让学习者更快掌握大数据实战技术。
如果想学习大数据技术,可以参考博学谷云计算大数据课程。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
大数据技术分享:Hive的静态分区与动态分区
Hive是机遇Hadoop的一个数据仓库工具,它的学习成本低,可以通过类SQL语句快速实现简单的MAPReduce统计,十分适合数据仓库的统计。在Hive学习过程中必定会接触到分区,这是Hive存放数据的一种形式。查询数据时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描其他不关心的分区,快速定位,提高查询效率。分区分为静态分区和动态分区两种形式。
11004
2019-06-21 18:18:25
大数据面试题 Hadoop/MapReduce,Spark,Strom,Hive 的特点及适用场景
随着移动互联网的发展,云计算大数据开发求职者越来越多,面对如此激烈的市场竞争,小编特为大家整理了大数据面试题:Hadoop/MapReduce,Spark,Strom,Hive 的特点及适用场景。
8585
2019-07-09 15:08:42
大数据技术的应用领域有哪些?
大数据技术逐渐成熟,已经在诸多领域得到了广泛的应用,随着5G时代的带来,数据化的企业运营成为企业优化产业结构、提升服务质量的奠基。在数据时代数据量迅速扩大、数据维度不断完善、数据分析的指导性更加明显。那大数据技术的应用领域有哪些呢?对于学习大数据技术的同学们而言,应该精准到哪些行业就业呢?
15431
2019-12-16 18:57:00
Hadoop集群动态扩容讲解
今天本文要讲解的是Hadoop集群动态扩容的内容,那么什么是动态扩容呢?数据量随着公司业务的增长越来越大,原有的datanode节点的容量,已经不能满足存储数据的需求,需要在原有集群基础上,动态添加新的数据节点,这就是我们说的动态扩容。下面一起来看看基础准备、添加datanode、datanode负载均衡服务、添加nodemanager等相关内容吧~
5935
2020-06-08 10:56:55
2021年大数据行业发展前景及岗位方向如何?
中国大数据行业的发展依然呈稳步上升趋势,大数据总体发展水平较好在各行业都有应用,其中金融大数据、政务大数据的应用水平高,同时交通、电信、商贸、医疗、教育、旅游等行业大数据的发展水平也有显着提升。
4680
2021-03-04 16:37:45