本文主要分享Hadoop三大分析工具:Hive、Pig和Impala。

Hive和Pig是高级数据语言,基于Mapreduce,底层处理的时候会转换成Mapreduce去提交,Hive和Pig都是开源的,Hive最初由Facebook开发,Pig最初由Yahoo!开发,下面进行分别介绍:

一、什么是Hive?

Hive可以看做是SQL到Mapreduce的一个映射器,就是不用开发Mapreduce,只要懂SQL就可以了,HiveQL是标准SQL92的一个子集,和标准的SQL并不完全一样,HiveQL本身有百分之二十的一个扩展,大概百分之八十的语法和标准的SQL是一致的,像

wKioL1hKVtOy5tcdAABTAQUn-IA709.png-wh_50

这种标准的SQL是支持的,所以对于数据分析人员来讲,就可以很方便的切入到Hadoop的平台上去做数据分析。

二、什么是Pig?

Pig是处理大数据集的数据流语言。什么是数据流呢?就是处理数据的流程可以一步步定义,比如第一步加载,第二步转换,第三步再转换,第四步存储,可以一步步定义数据的走向,很类似我们在数据挖掘中进行的系列处理流程。因为pig是数据流的语言,所以很适合做物质的数据探索和ETL阶段数据的非处理,他和Spark的思想很相似,所以也可以说Spark是实现正确的Pig。为什么这样说?因为Pig和Spark都是数据流似的处理,pig有转换,行动操作,在spark里面也是一样。

Pig数据流语言

数据分析:Hive、Pig和Impala_第1张图片

Pig在ETL阶段还是用的很多的,而且对于一些数据挖掘人员来说,尤其是探知一些未知数据,非常合适。因为不需要指定任何的名称、类型就可以先加载,然后去匹配所有的数据,接下来就可以去观察数据是怎样的,分析怎么去做转换。Pig是一种语义很精准的语言,所以学起来也会很方便的。

hive与pig的对比

数据分析:Hive、Pig和Impala_第2张图片

三、什么是Impala?

尽管我们有了hive,但是hive是基于mapreduce,它的分析效率并不高,大家都着力去找到一种高性能的SQL的引擎,impala的出现就解决了这一问题。Impala是处理海量数据的高性能SQL引擎,它的查询可以达到秒及,甚至有些数据少的可以达到毫秒级,延迟很低,比Hive、Pig或MapReduce快10到50倍,它的SQL 也是类似于HiveQL的查询语言,他和标准的SQL也是有百分之八十的语法重复,也有自己的扩展一部分。Impala它使用的数据是和Hive一样的,就好比在Hive里面创建一个表,Impala也是可以访问的,反之也是一样的。Impala运行在Hadoop集群上,数据存储在HDFS,不能使用MapReduce,他有自己的架构,也是主存的结构,每一个服务可以直接对数据块进行访问。Impala由Cloudera开发,100%开源,在Apache软件许可下发布。

那么有三种数据分析方案,在实际操作中,我们怎样来使用呢?总体来讲Pig没有Hive和Impala用的多,可是他们各有优势。接下来描述一下他们各自的使用条件:我们知道Impala是近实时的查询,使用数据和Hive一样,那么我们就会去问,为什么还要使用Hive呢?有一些复杂的文本分析只能用Hive,比如一些CSV的文件,一些高频词的分析,统计分析只能用Hive,Impala不支持.还有一些复杂类型的使用,比如用到数组,复杂的结构体这些也都只能用Hive。Impala主要用于及时的,交互式的分析,Hive用于稳定性挖掘比较高,实时性挖掘不高的作业。Pig也可以支持一些复杂的类型,但是pig没有固定的模型,如果做一些做临时的数据探索可以用。

比较Hive、Pig和Impala

数据分析:Hive、Pig和Impala_第3张图片

那么他们可以替代RDBMS吗?当然不行,关系型数据支持事务,延迟低,随时可以修改,而Hive和Impala做不到,所以代替不了关系型数据库,Pig、Hive和Impala主要适用于大量数据读以及低成本的广泛扩展。

               分析工作流示意

数据分析:Hive、Pig和Impala_第4张图片

以上就是笔者根据自己的知识体系给大家分享的数据分析内容,主要是针对Hive、Pig和Impala各自的特点、应用、区分,以及与传统数据库的区别来进行阐述,对于深入了解数据分析工具在实际中的运用有着重要作用。我在实际工作和学习中喜欢关注一些大数据实时资讯,如“大数据cn”,对于了解和把握大数据的发展状况有着很大作用,而且也喜欢去看一些别人分享的知识架构,比如“大数据时代学习中心”,来不断丰富和完善自己的知识体系,这些都极大促进了我的发展,推荐给大家。