当前位置: 移动技术网 > IT编程>数据库>其他数据库 > Hive的一些学习内容

Hive的一些学习内容

2019年07月03日  | 移动技术网IT编程  | 我要评论
Hive相关 metadata是元数据,包含数据库、表、字段、分区等信息。作用:客户端连接MetaStore服务,metastore再去连接MySQL数据库存储元数据,有了metastore服务可以实现多客户端同时连接MySQL。 metastore三种配置:内嵌(Derby)、本地元存储、远程元存 ...

hive相关

  1. 什么是metastore?
  • metadata是元数据,包含数据库、表、字段、分区等信息。作用:客户端连接metastore服务,metastore再去连接mysql数据库存储元数据,有了metastore服务可以实现多客户端同时连接mysql。
  • metastore三种配置:内嵌(derby)、本地元存储、远程元存储
  • hive的元数据默认存储在derby数据库,建议存储在像mysql这种关系型数据库中。
  • [为什么建议存储在关系型数据库中?]:默认的derby数据库只能建立一个客户端连接,不能实现多客户端同时访问。不适合生产环境。
  1. metastore安装方式有什么区别?
  • 内嵌:使用自带的derby数据库存储元数据,不需要额外的metastore服务。一次仅能有一个客户端连接,适合实验环境,不适合生产环境
  • 本地元存储:本地安装mysql来存储元数据,hive服务和metastore服务运行在同一个进程中。
  • 远程元存储:hive服务和metastore服务在不同的进程中。
  1. 什么是managed table和external table?
  • hive中有两种类型的表:managed table(内部表)和external table(外部表)
  • 内部表:hive的默认表类型,内部表的数据通常存放在/user/root/warehouse下
  • 使用describe formatted 表名 来查看是内部表还是外部表
  • 删除内部表时,存放在hdfs上的真实数据也一并删除。
  • 外部表:适合于在hive之外使用表的数据的情况,删除外部表时,只是删除了元数据,真是数据并没有删除
  1. 什么时候使用managed table和external table
  • 内部表适用于临时创建的中间表
  • 外部表数据多部门共享
  1. hive有哪些复合数据类型
    map:key-value
    struct:不同数据类型的集合
    array:同类型元素的集合
    uniontype:代表一个可以具有属于所选择的任何数据类型的值的列

  2. hive分区有哪些好处

  • 加速查询
  • 使用分区列的名称来创建子目录,当使用where子句执行查询操作时,只会扫描特定的子目录,而不用扫描全表。还是加速查询
  1. hive分区和分桶的区别
  • 分区:以字段的形式在表结构中存在,使用describe table_name 来查看字段是否存在,但是该字段不存放真实数据,仅仅是分区的表示(伪列)
  • 分桶:一种细粒度的数据划分操作。实际生产中使用较少。[采用对列值哈希,然后除以桶的个数求余]
  1. hive如何动态分区
  • 静态分区:加载数据时(显式)指定分区列
  • 动态分区:将数据推送到hive,hive决定哪个值进入哪个分区。需要启动动态分区[hive.exec.dynamic.parition.mode=nostrict]
  1. map join优化手段
  • join时大表放在后面[执行join时,需要选择哪个表被流式传输,哪个表被缓存。hive将join语句中最后一个表用于流式传输,所以要确该表在两者之间是大的一方]
  • sort-merge-bucket(smb) map join[使用前提:所有的表必须是桶分区(bucket)和已经排序的(sort)]
  1. 如何创建bucket表
  • hive默认是禁用分桶功能的,设置属性来强制使用分桶功能[hive.enforce.bucketing=true]
  1. hive有哪些file formats
  • text file format:默认格式,不压缩数据,磁盘开销大。
  • sequence file format:sf是hadoop api提供的一种二进制文件支持。使用方便、可分割、可压缩。
    sf支持3中压缩格式:none、record、block,建议使用block压缩。
  • rc file format:rc是一种行列存储相结合的存储方式。
  • parquet:列式数据存储
  • avro:avro schema数据序列化
  • orc:对rcfile做了优化,支持各种复杂的数据类型。
  1. hive最优的file formates是什么
    orc
  • orc将行的集合存储在一个文件中,且集合内的行数据将以列式存储。采用列式格式是为了压缩,从而降低存储成本。
  • 查询:查询的是指定列而不是行,记录以列式存储
  • orc基于列创建索引,查询效率高。
  1. hive传参
  • 使用--hivevar传入
  1. orderby 和 sortby的区别
  • order by:全局排序,但是只能有一个partition
  • sort by:局部排序,全局无序,partition内部有序,partition与partition之间没有关系。
  1. hive和hbase的区别
    • hive支持sql查询,hbase不支持。
    • hive不支持record级别和删除操作。
    • hive定义为数仓,hbase定义为nosql数据库。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网