大数据分析的技术栈(三)-Hive

序言

这是大数据分析技术栈的第三篇文章,在这片文章里面我们主要讨论的是Hive的使用。

Hive是什么

Hive直观的解释

Hive到底是什么呢?下面是有道词典的解释。
Hive: 蜂房,蜂巢,热闹的场所,熙攘喧闹的人群。下面直接上图来直观的了解一下Hive到底是什么。
这里写图片描述
是的,Hive就是这个看起来像蜜蜂,但是仔细观察,似乎又像小飞象的可爱的小东西。

Hive的官方解释

这里写图片描述
参考自Hive官网
大致来说,首先hive是一个数据仓库软件,它可以将结构化的数据映射为一张数据库表,对于这张数据库的表,可以提供类SQL的查询方式,而且Hive主要应用于大数据平台上面。下面是更为具体的细节。

  1. 建立了数据库表之后,很容易使用类SQL的方式访问这些数据。
  2. 建立类似关系型数据库的表结构,支持多种数据类型。
  3. Hive可以支持很多的源文件类型,这句话的意思是,Hive可以在多种文件类型上面建立表结构,例如HDFS,Hbase,Parquet等。
  4. 使用类SQL的方式建立查询,或者ETL之后,可以使用Apache Spark(这也是一种大数据的计算框架,我在后面的系列文章里面,也会介绍这项技术),或者MapReduce的方式执行。
  5. 而这种类SQL语言被称为HPL-SQL。

了解这些以后,我们会发现,Hive就是为了把大数据存储结构转换为关系型数据库处理的一种工具

Hive的使用

Hive表结构的创建

DROP TABLE IF EXISTS TEST_GREAT;
CREATE EXTERNAL TABLE TEST_GREAT (
    TEST_GREAT_ID STRING,
    ABC_ID STRING,
    BCD_ID STRING
)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" =
"
:key,
cf:ABC_ID,
cf:BCD_ID")
TBLPROPERTIES("hbase.table.name" = "TEST_GREAT");

这里我们的数据源是Hbase DB,你也可以换成其他的数据源,例如HDFS,Parquet。这里我们创建了一张Hive table TEST_GREAT,这张表实际上是对Hbase里面的表TEST_GREAT的映射。你也许会问,为什么么要做这个映射呢,直接使用API操作Hbase的表不行吗?这里的原因有下面几个:

  1. 为了降低技术的难度,降低学习成本,我们对于SQL很熟悉,建立Hive表之后就可以使用SQL去操作,而不用去重新学习Hbase API,这在团队合作开发中是非常重要的。
  2. Hbase API适宜对表进行简单的操作,但是真实的业务逻辑是比较复杂的,使用SQL更容易实现这些复杂的业务逻辑。
  3. 现在的大数据仓库很多,我们不可能每种技术都去深入的学习对应的API,而Hive刚好提供了一个统一的接口。

在建立Mapping的过程中,重要的是数据类型之间的转换,是的,Hive是有数据类型的,如果数据类型不匹配,就会造成数据的丢失。下面是Hive里面的数据类型。

Hive的数据类型(Data Type)

这里写图片描述
Hive的数据类型,参考Hive官网

Hive表的使用

可以使用类SQL的方式操作这些Hive表。

Select TEST_GREAT_ID from TEST_GREAT;


Select Max(TEST_GREAT_ID) from TEST_GREAT;

这里使用了两个例子,可以发现对于Hive表的使用和关系型数据库的表是这么的类似。当然这是类SQL,也就是说SQL有些特性,以及函数是不能被直接使用的。

总结

  1. Hive的设计就是为了简化对于大数据仓库的操作。相当于在数据仓库上面架设了一层,部分开发人员可以不用关心实际的存储结构,而使用已经熟悉的SQL语言,把重心放在实现具体的业务逻辑上面。这和JDBC等思想是一致的,都是实现统一的接口,屏蔽了底层的实现。底层的改动对于上层的影响是微乎其微的(数据仓库由Hbase变为了Parquet,我们的代码不用丝毫改动)。
  2. 我们学习一项技术不能只学习这项技术的用法,还要多多思考下面几个问题,为什么会出现这项技术,在别的领域有没有类似的技术等等。只有多思考和总结我们才能更快的进步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值