说了这么多,这就叫hive

Hive是什么:

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;其本质是将HQL转化成MapReduce程序。

  • 构建在Hadoop之上的数据仓库

    • 使用HQL作为查询接口
    • 使用HDFS存储
    • 使用MapReduce计算
  • 灵活性和扩展性比较好:支持UDF,自定义存储格式等

  • 适合离线数据处理


Hive体系结构:

Hive的数据存储基于HDFS,其没有专门的数据存储格式,主要的存储结构主要包括:数据库,文件,表,视图,索引。Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile,RCFile。创建表时指定Hive数据的列分隔符与行分隔符即可解析数据。

  • 用户接口:Client: 
    • CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)
  • 元数据:Metastore 
    • 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    • 默认存储在自带的derby数据库中,推荐使用采用MySQL
  • Hadoop 
    • 使用HDFS进行存储,使用MapReduce进行计算
  • 驱动器:Driver(包含解析器,编译器,优化器,执行器) 
    • 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
    • 编译器:将AST编译生成逻辑执行计划;
    • 优化器:对逻辑执行计划进行优化;
    • 执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;

Hive四种表类型

1.分区表 
- 最常用 
- 可以按时间日期进行分区 
2.内部表(管理表) 
- 一般创建临时表使用内部表 
- 创建的时候如果不指定是外部表,默认就是内部表 
- 删除表会将数据一并删除 
3.外部表(托管表) 
- 推荐使用此方式创建表 
- 创建的时候需要使用关键字(EXTERNAL)声明 
- 删除表的时候只会删除表结构不会删除数据 
4.桶表 
- 不常用 
- 桶表专门用于抽样查询,是很专业性的 
- 不是日常用来存储数据的表,需要抽样查询时,才创建和使用桶表。

有需要的联系我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值