Impala 与 Hive 的比较

Impala 与 Hive 的关系

impala是基于hive的大数据分析查询引擎直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hivemetastore服务

Hive元数据包含用Hive创建的database、table等元信息。元数据存储在关系型数据库中,如Derby、MySQL等。

客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

nohup hive --service metastore >> ~/metastore.log 2>&1 &

功能和hive类似

由于hive特性,数据查询慢,Impala查询效果和查询效率比HIve更高

类似于MySQL等关系型数据库,可以实现实时查询

Impala是依托于HIve的,其中Hive进行数据预处理,Impala实现实时查询(Impala的元数据用的是HIve的元数据)

Impala 与 Hive 的异同

相同点

数据存储:使用相同的存储数据池都支持把数据存储于HDFS, HBase。

元数据:两者使用相同的元数据。

SQL解释处理:比较相似都是通过词法分析生成执行计划。

不同点

执行计划:

Hive: 依赖于MapReduce执行框架,执行计划分成 map->shuffle->reduce->map->shuffle->reduce的模型。

如果一个Query会 被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。

Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询

数据流:

Hive: 采用的方式,每一个计算节点计算完成后将数据主动推给后续节点。

Impala: 采用的方式,后续节点通过getNext主动向前面节点要数据,数据可以流式的返回给客户端

容错:

Hive:依赖Hadoop的容错能力,时间长

Impala:在查询过程中,没有容错逻辑,如果在执行过程中发生故障,则直接返回错误(这与Impala的设计有关,因为Impala定位于实时查询,一次查询失败, 再查一次就好了,再查一次的成本很低)。

适用面:

Hive:复杂的批处理查询任务,数据转换任务

Impala:实时数据分析

函数用法:

Hive:全面,符合SQL标准

Impala:Hive中某些函数不支持,比如count(distinct)不能超过一个

排序:

特别注意排序在Hive 和 Impala中的差别,null在Hive里是最大,在Impala是最小,故进行排序前,最好对空值进行预先处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值