Advertisement

Hive知识之Hive基础

阅读量:

文章目录

        • 1、Hive简介
    • 2、Hive与传统关系型数据库的比较

    • 3、Hive的优势

    • 4、Hive的数据类型

      • 4.1 基础数据类型
      • 4.2 复杂数据类型
    • 5、Hive的基本操作

      • 5.1 数据库相关操作

        • 5.1.1 创建数据库
        • 5.1.2 查看数据库
        • 5.1.3 修改数据库
        • 5.1.4 删除数据库
      • 5.2 数据表相关操作

        • 5.2.1 创建数据表
        • 5.2.2 查看数据表
        • 5.2.3 修改数据表
        • 5.2.4 删除表和清空表
    • 6、数据的导入和导出

      • 6.1 数据的导入
      • 6.2 数据的导出
1、Hive简介
  • Hive是基于Hadoop的开源的数据仓库工具,用于处理海量结构化数据
  • Hive把HDFS中结构化的数据映射成表
  • Hive通过把HiveSQL进行解析和转换,最终生成一系列在Hadoop上运行的MapReduce任务,通过执行这些任务完成数据分析和处理
2、Hive与传统关系型数据库的比较
项目 Hive RDBMS
查询语言 HQL SQL
数据存储 HDFS Raw Device or Local FS
执行 MapReduce Excuter
执行延迟
处理数据
索引 0.8版本后加入位图索引 有复杂的索引
  • 数据仓库主要是用来进行数据分析的,它本身不产生数据,也不消耗数据,其数据是从外部来的,并且主要提供给外部使用。
  • 数据仓库是面向主题性来构建的,一般一个数仓都有一个特定的目的。
  • 数据仓库集成了众多数据的类型,分成了许多不同的层次。
  • 数据仓库中的历史数据一般不会改变,因为其主要用来记录已经发生的事实的数据
  • 数据仓库上层的分析是可能会发生变化的,体现了分析的灵活性。
3、Hive的优势
  • 把海量数据存储于Hadoop文件系统,而不是数据库,提供了一套类数据库的数据存储和处理机制,并采用HQL(类SQL)语言对这些数据进行自动化处理。
  • 提供一个熟悉SQL用户所能熟悉的编程模型,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,适合数据仓库的统计分析,应用开发灵活而高效。
4、Hive的数据类型
4.1 基础数据类型
数据类型 所占字节 开始支持版本
TINYINT 1byte,-128 ~ 127
SMALLINT 2byte,-32,768 ~ 32,767
INT 4byte,-2,147,483,648 ~ 2,147,483,647
BIGINT 8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
BOOLEAN
FLOAT 4byte单精度
DOUBLE 8byte双精度
STRING
BINARY 从Hive0.8.0开始支持
TIMESTAMP 从Hive0.8.0开始支持
DECIMAL 从Hive0.11.0开始支持
CHAR 从Hive0.13.0开始支持
VARCHAR 从Hive0.12.0开始支持
DATE 从Hive0.12.0开始支持
4.2 复杂数据类型
数据类型 描述 举例
ARRAY ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。 比如有一个ARRAY类型的变量fruits,它是由[‘apple’,‘orange’,‘mango’]组成,那么我们可以通过fruits[1]来访问元素orange,因为ARRAY类型的下标是从0开始的。
MAP MAP包含key->value键值对,可以通过key来访问元素。 比如”userlist”是一个map类型,其中username是key,password是value;那么我们可以通过userlist[‘username’]来得到这个用户对应的password。
STRUCT STRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素。 比如user是一个STRUCT类型,那么可以通过user.address得到这个用户的地址。

创建一个包含复制类型的表格可以如下:

复制代码
    CREATE TABLE employees (
    name STRING,
    salary FLOAT,
    subordinates ARRAY<STRING>,
    deductions MAP<STRING, FLOAT>,
    address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>
    ) PARTITIONED BY (country STRING, state STRING);
    
    
      
      
      
      
      
      
      
    
5、Hive的基本操作
5.1 数据库相关操作
5.1.1 创建数据库

语法:

复制代码
    CREATE (DATABASE/SCHEMA) [IF NOT EXISTS] database_name
    [COMMIT database_comment]
    [LOCATION hdfs_path]                    # 指定数据库位置
    [WITH DBPROPERTIES (property_name=property_value,...)];
    
    
      
      
      
      
    

例子:

复制代码
    CREATE DATABASE db_hive_01 ;
    CREATE DATABASE IF NOT EXISTS db_hive_02;     标准方式
    CREATE DATABASE IF NOT EXISTS db_hive_03 
    LOCATION '/homw/centos/hive/warehouse/db_hive_03.db';     
    
    
      
      
      
      
    
5.1.2 查看数据库
复制代码
    SHOW DATABASES;                   # 查看所有数据库
    SHOW DATABASES LIKE 'db_hive*';      # 模糊查找
    
    USE db_hive;                 # 使用数据库
    
    DESC DATABASE db_hive_01;      #  查看数据库字段格式等信息
    DESC DATABASE EXTENDED db_hive_01;    
    
    
      
      
      
      
      
      
      
    
5.1.3 修改数据库
复制代码
    ALTER DATABASE db_hive_01 SET
    LOCATION '/homw/centos/hive/warehouse/db_hive_01.db'; 
    
    
      
      
    
5.1.4 删除数据库
复制代码
    DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
    
    DROP DATABASE db_hive_01;
    DROP DATABASE db_hive_01 cascade;     # 强制删除数据库
    DROP DATABASE if exists db_hive_03;     # 删除非空的数据库
    
    
      
      
      
      
      
    
5.2 数据表相关操作
5.2.1 创建数据表

方式一:普通创建表

复制代码
    CREATE TABLE IF NOT EXISTS default.user_info(
     ip string COMMENT 'remote ip address' ,
     user string 
    COMMENT 'user_info'
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE;
    
    
      
      
      
      
      
      
    

方式二:子查询方式创建表

  • 将子查询的结构赋予一张新的表
复制代码
    CREATE TABLE IF NOT EXISTS default.user_info_a
    AS SELECT ip,req_url FROM default.user_info;
    
    
      
      
    

方式三:LIKE方式

  • 复制表的结构
复制代码
    CREATE TABLE stu_like LIKE student;
    
    
      
    
5.2.2 查看数据表
复制代码
    DESC FORMATTED table_name;
    
    
      
    
5.2.3 修改数据表
复制代码
    ALTER TABLE table_name RENAME TO new_name;    # 修改表名
    ALTER TABLE table_name CHANGE column_name new_column_name new_type;  # 修改列名
    
    ALTER TABLE table_name ADD COLUMNS (
    new_column_name STRING COMMENT '');     # 增加新的列
    
    
      
      
      
      
      
    
5.2.4 删除表和清空表
复制代码
    DROP TABLE IF EXISTS student;     # 删除表
    TRUNCATE TABLE student;          # 清空表的内容,保留表的结构
    
    
      
      
    
6、数据的导入和导出
6.1 数据的导入
复制代码
    load data local inpath '本地路径' overwrite into table 表名;  # 从本地导入到表中
    load data inpath 'HDFS上的路径' into table 表名;          # 从HDFS导入到表中
    
    
      
      
    
  • local:从本地文件加载数据到hive表;否则从HDFS加载数据到hive表。
    • 本地加载数据和HDFS加载数据的区别,本地加载数据是本地文件的复制拷贝,HDFS加载数据是移动数据文件的位置到对应的表目录下。
    • overwrite:覆盖表中已有数据,先删除数据,后加载数据。
6.2 数据的导出
复制代码
    insert overwrite local directory '本地路径' 查询语句;   # 将查询结果的数据导出到本地
    insert overwrite  directory 'HDFS上的路径' 查询语句;   # 将查询结果的数据导出到HDFS
    
    
      
      
    

全部评论 (0)

还没有任何评论哟~