是英雄还是狗熊?大数据那些事之SparkSQL

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

SparkSQL是Spark新推出来的一个模块。关于SparkSQL的八卦其实知道的不多,但是技术上倒能说几句。

早先我文章提到了Shark是个失败的作品。这个观点从Shark出来不久我就这样觉得了。SparkSQL的论文承认Spark团队也认为Shark是一条胡同走到黑的选择。既不能够对本地的RDD做查询,也不能有效和其他的Spark的模块交互。英雄所见略同。当然狗熊所见也差不多。至于是英雄还是狗熊,各位看官自己判断。

SparkSQL最主要的东西有两个,一个是DataFrame全面取代了RDD。我必须为这个叫声好。作为一个根红苗正的关系数据库思想熏陶出来的人,带有RDD的Spark总给我一种干爹干妈做的数据处理的产品的感觉。用上DataFrame顿时有回到亲爹亲妈做的产品的感觉。期间的差距,可能是无法言语表达的。

DataFrame看起来像表了,有metadata了,既打开了做optimization的空间,又能够很好的和其他的Spark模块结合起来。的确是Spark一步领先步步领先的必然选择,是大杀器。DataFrame一出,Spark的地位就真的牢固起来了。

第二个东西就是SparkSQL有了一个optimizer。这个optimizer粗看起来其实也没什么特殊的。作为在好几个optimizer里改过code的人,这个optimizer一看就是关系数据库的套路。有logical的pass有physical的pass。但是我觉得有几点是不同的。第一点是rule本身是用Scala写的。作为一个functional programming的语言,写tree matching写起来是得心应手。用Scala来写rule的确是非常的有意思和有意义的一个选择。第二是它有很多extension point。这就使得它用起来可获展性好。至于CodeGen成JVM bytecode,自从有了LLVM在数据库里面折腾,就算不上特别的惊艳了。但是起码的好处是不管什么语言无论是python还是java用SparkSQL,性能差距都不大了。

至于这个东西的未来发展,我觉得optimization现在在SQL相关的操作和其他操作之间还是要间断的。如果前面一堆sql的操作,中间有个machine learning的call,接下来又有一个sql的操作,optimization其实很难说把这三个捆在一起,做一个global的optimization。User-defined operator掺和的优化是很有意思又很难的。

另外我很能理解为什么现在系统是rule-based。Cost-based的东西在这种大规模分布式的系统下,很多时候怎么去cost就是个问题,不如Rule来得实用。能做固然是牛逼,但是其实能起作用的地方有限。我想如果我来,也会先上rule看看再说,也许这辈子都不上cost-based了。当然我听说在Spark Summit上,华为来的同学们上了一个cost-based optimizer。我不知道是不是华为的底蕴非常的牛,还是人有多大胆,地有多大产了。


本文作者:飞总

来源:51CTO

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
52 1
|
3月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
86 0
|
3月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
107 0
|
3月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
77 0
|
3月前
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
57 0
|
3月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
94 0
|
3月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
55 0
|
8月前
|
SQL 分布式计算 大数据
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
114 0
|
SQL 分布式计算 Java
大数据平台的SQL查询引擎有哪些—SparkSQL
大数据平台的SQL查询引擎有哪些—SparkSQL
大数据平台的SQL查询引擎有哪些—SparkSQL
|
大数据
【大数据 】SparkSQL连接查询中的谓词下推处理(二)
本篇文章要介绍的是--外连接查询中的谓词下推规则,这相比内连接中的规则要复杂一些,不过使用简单的表格来进行分析也是可以分析清楚的。
9209 0