目录:
为什么需要Hive ?
Hive 的基本架构与运行流程
Hive 的基本语法
为什么需要 Hive ?
MapReduce 提供了基本的计算框架,但 MapReduce 的开发过程太啰嗦,很难适用于日常业务中的数据分析场景,对于数据分析,最常用,也是最方便的方式是采用 SQL 语句,大部分数据分析业务都可以通过 SQL 语句解决。为此,Yahoo公司开发了 Pig ,Pig 采用类 SQL 的语法,使用者编写完 Pig 脚本后,Pig 会将其编译成 MapReduce 任务,然后提交给Hadoop 集群运行,Pig 的开发难度比 MapReduce 要少的多,但 Pig 的局限在于其语法还不够简洁。于是,Facebook 开发了 Hive ,Hive 的语法比 Pig 更加简洁,对于熟悉 MySQL等关系型数据库的开发人员可以很快上手 Hive ,Hive 大大降低了 Hadoop 的使用门槛,能解决大部分数据分析的业务场景,极大的推动了大数据技术的发展。
Hive 的基本架构与运行流程
Hive 基本架构:
Hive 的基本组成可以分为三个模块:用户接口(User Interface)、元数据存储模块(MetaStore)、驱动模块(Drivers)。用户接口包括命令行工具CLI,Thrift Server 和 HWI。Thrift Server 可以通过 JDBC 等驱动连接 Hive ,HWI 用于通过 Hue 等 web 的形式连接 Hive。元数据模块主要用来存储 Hive 需要用到的元数据,一般用 MySQL 进行存储。驱动模块是 Hive 的核心模块,用户通过用户接口提交的任务都会提交给驱动模块。
Hive 的运行流程:
首先,用户通过 Hive 的用户接口模块将 SQL 语句提交给驱动模块,驱动模块将 SQL 语句进行解析,解析过程中,驱动模块需要去元数据中查询相关的表信息,如表名、字段、分区、数据存储路径等,驱动模块解析完成后,将生成一系列的 MapReduce 任务,然后将 MapReduce 任务提交给 Hadoop 集群执行,最后,等待 Hadoop 集群将结果返回,Hive 再通过用户接口将结果返回给用户。
Hive 基本语法
建库建表与数据导入
Hive 中有一个默认的库,名称就叫 default 。新建库的语句为:create database mydata; 这样我们就新建了一个名称为 mydata 的数据库。
Hive 中的表分为内部表和外部表两种,二者最大的区别是,在删除内部表时,数据也会被删除;而删除外部表仅仅是删除表元数据的信息,而数据并不会被删除,
CREATE EXTERNAL TABLE IF NOT EXISTS TMP.DD
(
ID STRING,
NAME STRING,
PHONE BIGINT,
AGE INT
) PARTITIONED BY (ds)
ROW FORMATE DELIMITED FIELDS TERMINATED BY ''
STORED AS TEXTFILE
LOCATION 'hdfs://192.168.1.1'