Spark SQL远远超越了MPP SQL是真的么

  为什么说Spark SQL远远超越了MPP SQL

  前言

  这里说的并不是性能,因为我没尝试对比过(下文会有简单的说明),而是尝试从某种更高一层次的的角度去看,为什么Spark SQL 是远远超越MPP SQL的。

  

  Spark SQL 和 MPP SQL 其实不在一个维度上。简而言之,

  MPP SQL 是 Spark SQL 的一个子集

  Spark SQL 成为了一种跨越领域的交互形态

  MPP SQL 是 Spark SQL 的一个子集

  MPP SQL 要解决的技术问题是海量数据的查询问题。这里根据实际场景,你还可以加上一些修饰词汇,譬如秒级,Ad-hoc 之类。

  在实际业务中

  探索类业务,比如KPI多维分析,用户画像查询,数据科学家摸底数据等

  运营类业务,比如报表(现在很多BI系统基本上完全基于SQL来构建),各种运营临时统计需求

  分析类业务,不过这个会比较浅显。显然,真实的的分析应该主要依托一些统计类,机器学习等技术的支持

  运维类业务,比如实时查询查看海量的系统日志等

  MPP SQL 是有一定的性能优势的,从HAWQ,Impala 等都是基于MPP架构的。然而仅限于此。这些功能Spark SQL 目前都已经涵盖了,MPP SQL能做的事情,Spark SQL都完成的很漂亮。

  依托于Spark 自身的全平台性(漂亮的DataSource API以及各个厂商的努力适配),Spark SQL 基本上可以对接任意多个异构数据源进行分析和查询。

  关于性能可以再多说两句:

  得益于一些具有复杂存储格式的文件的诞生,譬如CarbonData, Spark SQL 已经实现海量数据的秒级查询

  Spark 自身通过Tungsten等项目的优化(尤其是代码自动生成),速度越来越生猛,而JVM譬如GC带来的问题则可以进一步通过off-heap的方式减少。

  所以 Spark SQL 和 MPP SQL在性能上的差距也会越来越小。

  Spark SQL 成为了一种跨越领域的交互形态

  Spark 通过使用DS(2.0统一了DF 和 DS,使用一套SQL引擎)极大的增强了交互语意,意味着你可以用SQL(DS)作为统一的交互语言完成流式,批处理,交互式查询,机器学习等大数据领域常见场景。这在任何一个系统都是不多见的,也可见Spark团队的抽象能力。

  引言中的那篇文章其实是作者吐槽Spark 团队对Spark core(RDD)那层关注太少了,所以开始发牢骚。

  现在我们再回过头来看我们常见的一些业务:

  实时分析类业务

  探索类业务

  分析预测类业务

  运营报表类业务

  首先这些业务都可以使用Spark 来实现。其次统一的交互接口都是DS(DF/SQL),并且DS/SQL 是一套极度易用并且广泛普及和接受的。

  当然Spark 也不是一步就做到这点的,原来流式计算和批量计算就是两套API, DF 和 DS 也是两套API,后面经过发展,Databricks 团队也在积极思考和慢慢成长,经过先前已经有的积累,才做到现在的这一步。

  所以本质上DS/SQL 已经成为除了RDD API 以外,另外一套通用的,统一的交互式API,涵盖了流式,批处理,交互式查询,机器学习等大数据领域。这也是我们第一次达成这样的统一,目前来看也仅在Spark平台上得以实现,它是的大数据的使用和学习门槛进一步降低,功在千秋。

  RDD VS DS/SQL

  DS/SQL 是一套数据类型首先,操作种类受限的表达语言,意味着Spark 团队可以做更好的性能优化,也意味着门槛更低,在易用性和性能上都能取得良好的平衡。

  【财富热线:400-189-0298】北京美源星(http://www.meiyuanxing.com/)石油化工管理投资有限公司是一家致力于为投资者提供专业的现货重油交易平台、交易开户服务,同时提供投资咨询、市场行情分析、原油价格查询、投资策略、石油政策等服务的公司。北京美源星石油化工投资管理有限公司以现货重油产品交易为主要经营业务,以及现货重油投资咨询和经济信息咨询等业务。

时间: 2024-12-08 04:24:12

Spark SQL远远超越了MPP SQL是真的么的相关文章

Apache Spark源码走读之11 -- sql的解析与执行

欢迎转载,转载请注明出处,徽沪一郎. 概要 在即将发布的spark 1.0中有一个新增的功能,即对sql的支持,也就是说可以用sql来对数据进行查询,这对于DBA来说无疑是一大福音,因为以前的知识继续生效,而无须去学什么scala或其它script. 一般来说任意一个sql子系统都需要有parser,optimizer,execution三大功能模块,在spark中这些又都是如何实现的呢,这些实现又有哪些亮点和问题?带着这些疑问,本文准备做一些比较深入的分析. SQL模块分析有几大难点,分别为

spark 分析sql内容再插入到sql表中

package cn.spark.study.core.mycode_dataFrame; import java.sql.DriverManager;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD

思考:sql为什么那么强大,sql解决了什么问题?

思考:sql为什么那么强大,sql解决了什么问题?hive和spark都支持sql,ES 和flink也支持sql了解下spark为什么能够支持sql;flink为什么能够支持sql?SQL:Structured Query Language所以从字面可以看出来,只有结构化的数据才能sql查询,这个是一个前提和基础;结构化的数据是对人类来说是友好的,那么对于计算机呢? 原文地址:https://www.cnblogs.com/big1987/p/11090514.html

SQL安装过程中“针对SQL Server 注册表的一致性验证“出错解决方式

1.打开注册表,查找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\0804],分别打开Counter 和Help 2.打开Counter,把滚动条拉倒最后,然后记下最大的那个值(不同计算机不一样的),记下后关闭窗口 3.同样的打开Help,滚动到最后记最大的那个值(你们的值不一定跟我一样的哦!!!),记下后关闭窗口 4,再重新定位到Perflib的节点上, 5.双击Last Counter然后在

SQL的别名和SQL的执行顺序和SQL优化

SQL的别名 1.不可以在where子句中使用列名的别名,即select name t from emp where t>2999;是不允许的 2.使用别名的好处: 提高SQL的易读性 提高SQL的解析执行效率 语法检查 语义检查 共享池检查 生成执行树 执行 3.SQL的硬解析和软解析? SQL的执行顺序 1.from语句--where语句--group by语句--having语句--select语句--order by语句 rownum的使用 select * from emp rownu

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn

转:如何学习SQL(第一部分:SQL基础)

转自:http://blog.163.com/[email protected]/blog/static/285720652010950712271/ 1. 为什么学习SQL 自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到前所未有的广度和深度.如何管好和用好信息,是(而且将一直是)IT行业一块重要的领域.在过去几十年中,关系数据库一直在这一领域占主导地位,而建立在关系理论基础之上的SQ

图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join.我觉得清楚易懂,转过来. 假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示

SQL 2008存储图片和SQL 2008读取图片

用SQL Server存储文字数据很容易实现,如果用SQL Server存储图片呢?大家有没有实现思路呢?现在我用一个Demo来为大家提供一种在SQL Server中存储图片的思路. 场景:在superPhoto文件夹中,有三位NBA超级巨星的图片需要存储在数据库中,他们分别是保罗.罗斯和德隆,文件内容如下: 有了需求,下面讲实现.实现过程分为3个步骤. 步骤1:我们需要在数据库test中建立T_superStar表,并向表中插入三位球星的信息. create table T_superStar