web访问hive速度怎么样_关于优化Hive查询速度的一些实践

写在前面

由于工作需要,笔者在最近的日常工作中大量使用了Hive。由于其查询速度较为缓慢,笔者花了大量的时间去学习如何优化Hive的查询速度。所谓久病成良医,笔者在这过程中也积累了一些经验,在此做一个分享与总结,也希望能帮助到需要的人。另外,许多数据分析的JD中都要求有Hive经验。因此,有志于转行数据分析的朋友们也可以借此了解一下Hive。

本文基于Hue运行Hive。

PS:笔者对Hive及其相关理论的认识比较粗浅,存在错误之处还请大家及时指正。本文仅记录笔者亲身实践过的并行之有效的一些方法。

Why Hive

说到Hive就不能不提Hadoop。Hadoop作为大数据必备框架,近年来大红大紫。为了不误导读者,在此引用专业名词解释:一句话产品介绍:

Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。

Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

关于Hadoop的更多知识,可以查看如下链接:Hadoop家族学习路线图 | 粉丝日志​blog.fens.me

之前笔者苦于查询速度过慢,曾经向资深同事问过一个问题:为啥不用MySQL?

这个其实和公司的业务有关。在数据开发工程师设计数据库架构时,就需要考虑到公司业务的需求和将来可能的数据量大小。从数据量和查询速度上看,传统的数据库可以做到“小而美”,即在数据量不大时可以提供较快的查询。而Hive基于MapReduce框架进行运行,本身就具有高延迟性,在数据量较小时非常明显。当数据量较大时,Hive的并行运算优势就会体现出来。

此处再引用一个比较好的解释:Hive是为了简化编写MapReduce程序而生的。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑,就是些表的定义等,也就是表的元数据。使用SQL实现Hive是因为SQL大家都熟悉,转换成本低,类似作用的Pig就不是SQL。

以上看不懂没关系,因为笔者也不是太懂。总而言之,笔者由于架构的限制,必须使用Hive在线查询数据量并不大的数据仓库(约十几万条),因此被迫寻找了一些优化措施。

Impala

由于在实际编写SQL的过程需要不断调整与优化(自身水平的局限性),而Hive的高延迟极大地降低了SQL试错的速度,因此引入Impala作为一种快速的查询手段用于SQL语句的调试。什么是Impala?

Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。

换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

但是,由于底层算法不同,impala在提供低延迟的同时,也有以下缺点:1.Impala不提供任何对序列化和反序列化的支持。

2.Impal

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值