一、基本概念
1. 定义
Hive是基于Apache Hadoop的数据仓库基础架构,用于读取,写入和管理存储在分布式系统中的大型数据集,并使用SQL语法进行查询。
Hive建立在Hadoop之上,具有以下功能:
- 通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析。
- A mechanism to impose structure on a variety of data formats 一种为各类数据格式增加表结构的机制
- 访问直接存储在HDFS或其他数据存储系统的文件
- 通过Tez,Spark或MapReduce执行查询
- Procedural language with HPL-SQL
- 通过Hive LLAP,Apache YARN和Apache Slider进行子 - 秒查询检索
上图为一幅经典的Hive基本架构图:下层基于Hadoop,上层主要包括驱动器、服务器、客户端和元数据存储,驱动又包含了编译器、优化器和执行器
Hive旨在最大限度地提高可扩展性(通过更多的机器向Hadoop集群动态添加),性能,可扩展性,容错性以及与其输入格式的松散耦合。
Hive的组件包括HCatalog和WebHCat。
- HCatalog用于Hadoop的 表和存储 管理层,使用户可以使用不同的数据处理工具(包括Pig和MapReduce)来更轻松地读取和写入数据。
- WebHCat提供了一个可用于运行Hadoop MapReduce(或YARN),Pig,Hive作业或使用HTTP(REST风格)界面执行Hive元数据操作的服务。
2. 版本
Hive目前存在两条线:master、branch-1,对应的Hive版本即Hive2.x.y和Hive1.x.y
3. 与关系数据的对比
与关系型数据库的区别:
由于设计目的的不同,导致Hive和关系型数据库的一系列区别,需要重点理解Hive的“读模式”。
二、基本操作
Hive目前有两个客户端:Hive CLI、Beeline CLI 。Beeline是HiveServer2(在Hive 0.11中引入)的,基于SQLLine的JDBC客户端。 由于Hive新开发集中在HiveServer2上,Hive CLI很快将被弃用。
1.DDL (create/drop/alter/truncate/show/describe)
1.1、建数据库
Hive通过数据库(Databases)、表(Tables)、分区(Partitions)、桶(Buckets)来组织数据,其中分区和桶是非必需的,根据数据情况进行选择。
-- 建数据库语法
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
其中DADATABASE和SCHEMA等价,可以互换。
--删除数据库
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
--修改数据库属性
ALTER (