python使用spark sql查询impala_spark,hive,pig,Impala 和 spark SQL

spark

Spark是加州大学伯克利分校AMP实验室所开源的类HadoopMapReduce的通用并行框架,拥有类似Hadoop MapReduce的并行处理模式。不同于MapReduce的是,Spark任务的中间输出结果可以保存在内存中,从而不用再读写HDFS。而且Spark还提出了弹性分布式数据集(RDD)的概念,调度中采用了更为通用的有向任务执行计划图(DAG)。RDD是分布在一组节点中的只读对象集合,如果它们中的一部分丢失,则可以依赖于容错机制进行重建,因此称为“弹性的”。Spark能更好地适用于数据挖掘与机器学习等需要多次迭代的算法,以便构建大型的、低延迟的数据分析应用程序。

hive

Hive(http://hive.apache.org/)是Hadoop项目中的另一个子项目,它是建立在Hadoop基础之上的数据仓库工具,可以存储、查询和分析存储在HDFS中的大规模数据,目前最新的版本是1.2.1。在第3章中,我们提到了经典的关系型数据库使用结构化查询语言SQL(StructureQuery Language)来查找数据。为了实现数据的提取、转化和加载(Extraction,Transform,Load),Hive也定义了一种简单的类SQL查询语言,称为HiveQL(Hive SQL)。对于熟悉SQL的用户而言,HiveQL的入门和使用非常方便。Hive会将SQL语句转换为MapReduce任务在后台运行,因此用户不必开发专门的MapReduce应用,也不用关心具体的转换逻辑,非常适合用于数据仓库的统计分析。同时,HiveQL也允许熟悉MapReduce框架的用户,开发自定义的Mapper和Reducer,来处理内建模块无法完成的复杂工作。从架构上看,Hive主要包括如下模块:用户端、解释器、元数据存储和分析数据存储。

image.png

Impala

另一个执行于现有Hadoop基础设施上的互动SQL查询引擎是Impala[插图],它是Cloudera公司主导开发的查询系统,目前的最新版本是2.1。类似Apache Hive,Impala也能通过类SQL的语言查询存储在HDFS和HBase中的PB级大数据。不过,Impala考虑了实时性更强的需求,在设计上和Hive有所不同。Hive采用的方法是将SQL查询转化成MapReduce任务,这仍然是一个批处理过程,故而难以满足查询的交互性。相比之下,Impala的速度之快就成了它的一大特色。为了实现这一点,Impala参考了Google的交互式数据分析系统Dremel。Impala使用Parquet实现了列存储,并借鉴了MPP并行数据库的思想。同时,它采用HiveQL和JDBC等接口,进行全局统一的元数据存储和读取。对于用户查询则是直接进行分布式处理,在HDFS或HBase上本地读写,因此具有良好的扩展性和容错性。此外,由于放弃了MapReduce的运行框架,它也没有MapReduce作业启动、洗牌、排序等开销,无须将中间结果写入磁盘,节省了大量的I/O开销,也降低了网络传输的数据量。当然,Impala并不是用来取代现有的MapReduce框架的,而是作为MapReduce的一个强力补充。一般而言,Impala更适合处理输出数据较小的查询请求,而对于大数据量的批处理任务,MapReduce依然是更好的选择。有理由相信在不久的未来,借助处理速度上的优势,Impala可以在大数据处理领域占得一席之地。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值