SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid

简介:

转自infoQ!

 

根据 O’Reilly 2016年数据科学薪资调查显示,SQL 是数据科学领域使用最广泛的语言。大部分项目都需要一些SQL 操作,甚至有一些只需要SQL。

本文涵盖了6个开源领导者:Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto,还加上Calcite、Kylin、Phoenix、Tajo 和Trafodion。以及2个商业化选择Oracle Big Data SQL 和IBM Big SQL,IBM 尚未将后者更名为“Watson SQL”。

(有读者问:Druid 呢?我的回答是:检查后,我同意Druid 属于这一类别。)

使用SQL 引擎一词是有点随意的。例如Hive 不是一个引擎,它的框架使用MapReduce、TeZ 或者Spark 引擎去执行查询,而且它并不运行SQL,而是HiveQL,一种类似SQL 的语言,非常接近SQL。“SQL-in-Hadoop” 也不适用,虽然Hive 和Impala 主要使用Hadoop,但是Spark、Drill、HAWQ 和Presto 还可以和各种其他的数据存储系统配合使用。

不像关系型数据库,SQL 引擎独立于数据存储系统。相对而言,关系型数据库将查询引擎和存储绑定到一个单独的紧耦合系统中,这允许某些类型的优化。另一方面,拆分它们,提供了更大的灵活性,尽管存在潜在的性能损失。

下面的图1展示了主要的SQL 引擎的流行程度,数据由奥地利咨询公司Solid IT 维护的DB-Engines提供。DB-Engines 每月为超过200个数据库系统计算流行得分。得分反应了搜索引擎的查询,在线讨论的提及,提供的工作,专业资历的提及,以及tweets。

 

来源:DB-Engines,2017年1月 http://db-engines.com/en/ranking

虽然Impala、Spark SQL、Drill、Hawq 和Presto 一直在运行性能、并发量和吞吐量上击败Hive,但是Hive 仍然是最流行的(至少根据DB-Engines 的标准)。原因有3个:

  • Hive 是Hadoop 的默认SQL 选项,每个版本都支持。而其他的要求特定的供应商和合适的用户;
  • Hive 已经在减少和其他引擎的性能差距。大多数Hive 的替代者在2012年推出,分析师等待Hive 查询的完成等到要自杀。然而当Impala、Spark、Drill 等大步发展的时候,Hive只是一直跟着,慢慢改进。现在,虽然Hive 不是最快的选择,但是它比五年前要好得多;
  • 虽然前沿的速度很酷,但是大多数机构都知道世界并没有尽头。即使一个年轻的市场经理需要等待10秒钟来查明上周二Duxbury 餐厅的鸡翅膀的销量是否超过了牛肉汉堡。

在下面的图2中可以看出,相对于领先的商业数据仓库应用,用户对顶尖的SQL 引擎更感兴趣。

来源:DB-Engines,2017年1月 http://db-engines.com/en/ranking

对于开源项目来说,最佳的健康度量是它的活跃开发者社区的大小。如下面的图3所示,Hive 和Presto 有最大的贡献者基础。(Spark SQL 的数据暂缺)

来源:Open Hub https://www.openhub.net/

在2016年,ClouderaHortonworksKognitio 和Teradata 陷入了Tony Baer 总结的基准测试之战,令人震惊的是,供应商偏爱的SQL 引擎在每一个研究中都击败了其他选择,这带来一个问题:基准测试还有意义吗?

AtScale 一年两次的基准测试并不是毫无根据的。作为一个BI 初创公司,AtScale 销售衔接BI 前端和SQL 后端的软件。公司的软件是引擎中立的,它尝试尽可能多的兼容,其在BI 领域的广泛经验让这些测试有了实际的意义。

AtScale 最近的关键发现,包括了Hive、Impala、Spark SQL 和Presto:

  • 4个引擎都成功运行了AtScale 的BI 基准查询;
  • 取决于数据量、查询复杂度和并发用户数,每个引擎都有自己的性能优势:
    • Impala 和Spark SQL 在小数据量的查询上击败了其他人;
    • Impala 和Spark SQL 在大数据量的复杂join 上击败了其他人;
    • Impala 和Presto 在并发测试上表现的更好。
  • 对比6个月之前的基准测试,所有的引擎都有了2-4倍的性能提升。

Alex Woodie 报告了测试结果,Andrew Oliver 对其进行分析

让我们来深入了解这些项目。

Apache Hive

在2016年,Hive 有100多人的贡献者。该团队在2月份发布了Hive 2.0,并在6月份发布了Hive 2.1。Hive 2.0 的改进包括了对Hive-on-Spark 的多个改进,以及性能、可用性、可支持性和稳定性增强。Hive 2.1 包括了Hive LLAP(”Live Long and Process“),它结合持久化的查询服务器和优化后的内存缓存,来实现高性能。该团队声称提高了25倍。

Apache Impala

2012年,Cloudera 推出了Impala,一个开源的MPP SQL 引擎,作为Hive 的高性能替代品。Impala 使用HDFS 和HBase,并利用了Hive 元数据。但是,它绕开了使用MapReduce 运行查询。

。。。

9月,Cloudera 发布了一项研究结果,该研究比较了Impala 和Amazon Web Services 的Redshift 列存储数据库。报告读起来很有意思,虽然主题一贯的需要注意供应商的基准测试。

Spark SQL

。。。

Apache Drill

2012年,由Hadoop 分销商的领导者之一MapR 领导的一个团队,提出构建一个Google Dremel 的开源版本,一个交互式的分布式热点分析系统。

2015年,两位关键的Drill 贡献者离开了MapR,并启动了Dremio,该项目尚未发布。

Apache HAWQ

。。。

Presto

Facebook 工程师在2012年发起Presto 项目,作为Hive 的一个快速交互的取代。在2013年推出时,成功的支持了超过1000个Facebook 用户和每天超过30000个PB级数据的查询。2013年Facebook 开源了Presto。

Presto 支持多种数据源的ANSI SQL 查询,包括Hive、Cassandra、关系型数据库和专有文件系统(例如Amazon Web Service 的S3)。Presto 的查询可以联合多个数据源。用户可以通过C、Java、Node.js、PHP、Python、R和Ruby 来提交查询。

。。

其他项目

pass











本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6625434.html,如需转载请自行联系原作者


相关文章
|
4月前
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(上)
大模型与数据分析:探索Text-to-SQL(上)
2187 0
|
1月前
|
SQL 存储 分布式计算
|
2月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之怎么编写和执行Spark SQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
SQL 分布式计算 HIVE
实时计算 Flink版产品使用问题之同步到Hudi的数据是否可以被Hive或Spark直接读取
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL 分布式计算 NoSQL
使用Spark高效将数据从Hive写入Redis (功能最全)
使用Spark高效将数据从Hive写入Redis (功能最全)
213 1
|
4月前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
669 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
4月前
|
SQL 分布式计算 关系型数据库
使用 Spark 抽取 MySQL 数据到 Hive 时某列字段值出现异常(字段错位)
在 MySQL 的 `order_info` 表中,包含 `order_id` 等5个字段,主要存储订单信息。执行按 `create_time` 降序的查询,显示了部分结果。在 Hive 中复制此表结构时,所有字段除 `order_id` 外设为 `string` 类型,并添加了 `etl_date` 分区字段。然而,由于使用逗号作为字段分隔符,当 `address` 字段含逗号时,数据写入 Hive 出现错位,导致 `create_time` 值变为中文字符串。问题解决方法包括更换字段分隔符或使用 Hive 默认分隔符 `\u0001`。此案例提醒在建表时需谨慎选择字段分隔符。
|
4月前
|
SQL 数据挖掘 HIVE
【Hive SQL 每日一题】在线课程学生行为数据分析
该数据分析师任务是分析在线学习平台的学生行为,以优化课程内容和学习体验。提供的数据包括`students`表(含学生ID、姓名、年龄和性别)和`course_activity`表(含活动ID、学生ID、课程ID、活动日期和学习时长)。分析涉及:1) 学生参加的课程数量,2) 课程总学习时长,3) 按性别分组的平均学习时长,4) 学生首次参加的课程及日期,5) 学生最近一次学习的时长,以及6) 参与学生最多的课程。所有查询都使用了SQL,部分涉及窗口函数和分组统计。数据集可在给定链接下载。
|
4月前
|
SQL 分布式计算 关系型数据库
Spark编程实验三:Spark SQL编程
Spark编程实验三:Spark SQL编程
70 1
|
4月前
|
SQL 分布式计算 数据库
Spark SQL
Spark SQL
61 1