大数据面试-hive

目录

1.hive是怎样保存元数据的

保存元数据的方式有:内存数据库rerdy,本地mysql数据库,远程mysql数据库,但是本地的mysql数据用的比较多,因为本地读写速度都比较快

  • 内存数据库derby,安装小,但是数据存在内存,不稳定
  • mysql数据库,数据存储模式可以自己设置,持久化好,查看方便。
2.外部表与内部表的区别

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据

内部表:加载数据到hive所在的hdfs目录,删除时,元数据和数据文件都删除

外部表:不加载数据到hive所在的hdfs目录,删除时,只删除表结构。
3.Hive 的 sort by 和 order by 的区别

(1)order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。

(2)sort by不是全局排序,其在数据进入reducer前完成排序.
因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1, 则sort by只保证每个reducer的输出有序,不保证全局有序

4.hive保存元数据的方式以及各有什么特点?

(1)Hive有内存数据库derby数据库,特点是保存数据小,不稳定

(2)mysql数据库,储存方式可以自己设定,持久化好,一般企业开发都用mysql做支撑

5.在开发中问什么建议使用外部表?

(1)外部表不会加载到hive中只会有一个引用加入到元数据中
(2)hive不会修改数据,所以无需担心数据的损坏
(3)在删除时不会删除表,只会删除元数据,所以不必担心数据的

6.hive 如何调优?

在优化时要注意数据的问题,尽量减少数据倾斜的问题,减少job的数量,同事对小的文件进行成大的文件,如果优化的设计那就更好了,因为hive的运算就是mapReduce所以调节mapreduce的参数也会使性能提高,如调节task的数目。

insert into 和 override write区别?
insert into:将某一张表中的数据写到另一张表中

override write:覆盖之前的内容。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容