《Spark大数据分析:核心概念、技术及实践》一1.6 分布式SQL查询引擎-阿里云开发者社区

开发者社区> 华章出版社> 正文

《Spark大数据分析:核心概念、技术及实践》一1.6 分布式SQL查询引擎

简介:
  本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第1章,第1.6节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


1.6 分布式SQL查询引擎

如前所述,SQL是最常用来查询和分析数据的语言之一。它易学且有群众基础(了解SQL的人远比了解编程语言如Java的人多)。基本上,Hive就是因此而诞生。不过,Hive依赖于MapReduce,因为它把HiveQL查询转换成MapReduce的作业任务。

MapReduce是一个强大的框架。然而,它用于处理批量数据,它有大吞吐量和高延迟。对于数据转换或者ETL(提取、转换、加载)作业来说,它的表现非常棒,但在交互式查询或实时分析方面则不是一个完美的平台。Hive继承了MapReduce的限制。这促进了使用不同架构的低延迟查询引擎的诞生。

本节讨论了几个没有使用MapReduce的开源且低延迟的分布式SQL查询引擎。Spark SQL也可以作为分布式查询引擎,但此处暂不涉及,第7章会详细讨论。

1.6.1 Impala

Impala是一个开源的数据分析软件。它提供了SQL接口来分析存储在HDFS和HBase中的大数据集,支持HiveQL以及Hive支持的类SQL语言,可用于批处理和实时查询。

Impala没有使用MapReduce。相反,它使用了一种专业的分布式查询引擎来避免高延迟。它的架构和商用数据库MPP(大规模并行处理)类似。带来的好处就是:它提供了比Hive快一个数量级的响应时间。

1.6.2 Presto

Presto也是一个用于分析大数据集的开源分布式SQL查询引擎。目前,它提供的SQL接口可以分析HDFS、Cassandra和关系数据库中的数据。它支持太字节和拍字节级数据的交互式分析查询。另外,它还支持组合多数据源进行查询。

Presto在架构上与Impala类似,没有用MapReduce来分析HDFS数据,而是实现了MPP架构。

1.6.3 Apache Drill

Apache Drill是另一个用于分析存储在HDFS或NoSQL数据库中大数据集的开源分布式SQL查询引擎,其灵感来源于Google的Dremel。它可以用来对拍字节级数据执行快速的交互式即席查询。和Presto与Impala类似,它实现了一个集群式的MPP架构。它支持ANSI SQL和JDBC/ODBC接口,所以可以使用在任何支持JDBC/ODBC的BI或数据可视化应用中。

Apache Drill的主要特性包括:动态模式发现,灵活的数据模型,去中心化的元数据和可扩展性。使用Drill查询数据集时,模式规范并不是必需的。它使用自描述的格式(如Avro、JSON、Parquet和NoSQL)所提供的信息来决定数据集的模式。它也能处理查询中模式的更改。

Drill支持层级式的数据模型来查询复杂数据。它可以查询复杂的嵌套数据结构。比如,它可以用来查询存储在JSON或Parquet中的嵌套数据而不用“铺平”它们。

在Drill中,中心化的元数据也不是必需的。它通过数据源的存储插件获取元数据。因为不依赖中心化的元数据,所以Drill可以用来从多个数据源中立即查询数据,比如,Hive、HBase和文件。因此,它可以用作一个数据可视化平台。

Dirll兼容Hive。可以在Hive环境中使用Drill来实现对现有Hive表的快速、交互式的即席查询。它支持Hive的元数据、UDF(用户定义的函数)和文件格式。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接