Hadoop生态之Hive知识点总结

一、简介

Hive是建立在Hadoop HDFS上的数据仓库基础架构;

Hive可以用来进行数据提取转化加载(ETL);

Hive定义了简单的类似SQL查询语言,称之为HQL它允许熟悉SQL的用户查询数据;

Hive允许熟悉MapReduce开发者开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作;

Hive是SQL解析引擎,他将SQL语句转移成M/R JOB然后在Hadoop执行;

Hive的表其实就是HDFS的目录/文件;

二、Hive的体系结构

Hive的元数据

Hive将元数据存储在数据库中(metastore),支持mysql、derby等数据库;

Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等;

Hive的执行过程

解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(Plan)的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行;

Hive的体系结构

三、Hive的管理

1、命令行方式

直接输入#<HIVE_HOME>/bin/hive的执行程序

或者输入#hive --service cli

常用的CLI命令

  • 清屏:                                               Ctrl + L 或者 !clear
  • 查看数据仓库中的表:                      show tables;
  • 查看数据仓库中内置的函数:           shou functions;
  • 查看表结构:                                    desc 表名
  • 查看HDFS上的文件:                       dfs -ls 目录
  • 执行操作系统的命令:                      ! 命令
  • 执行HQL语句:                                select *** from ***
  • 执行SQL的脚本:                             source SQL文件

2、Web界面方式

  • 端口号9999
  • 启动方式:hive --servicehwi &
  • 通过浏览器访问:http://<IP地址>:9999/hwi/

3、远程服务启动方式

  • 端口号10000
  • 启动方式:hive --service hiveserver &
  • 以JDBC或ODBC的程序登录到hive中操作数据时,必须用远程服务启动方式

四、Hive的数据类型

基本数据类型

  • tinyint/smallint/int/bigint:整数类型
  • float/double:浮点数类型
  • boolean:布尔类型
  • string:字符串类型

复杂数据类型

  • Array:数组类型,由一系列相同数据类型的元素组成
  • Map:集合类型,包含key-value键值对,可以通过key来访问元素
  • Struct:结构类型,可以包含不同数据类型的元素,这些元素可以通过“点语法”的方式来得到所需要的元素

时间类型

  • Date:从Hive0.12.0开始支持
  • Timestamp:从Hive0.8.0开始支持

五、Hive的数据模型

  • Table 内部表

            与数据库中的Table在概念上是类似

            每一个Table在Hive中都有一个相应的目录存储数据

            所有的Table数据(不包括External Table)都保存在这个目录中

            删除表时,元数据与数据都会被删除

  • Partition 分区表

           Partition对应于数据库的Partition列的密集索引

           在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中

  • External Table 外部表

           指向已经在HDFS中存在的数据,可以创建Partition

           它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异

           外部表只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接

  • Bucket Table 桶表

            桶表是对数据进行哈希取值,然后放到不同文件中存储

视图

     视图是一种虚表,是一个逻辑概念;可以跨越多张表

     视图建立在已有表的基础上,视图赖以建立的这些表称为基表

     视图可以简化复杂的查询

猜你喜欢

转载自blog.csdn.net/Evan_CaoM/article/details/86518308