数据蒋堂 | 大数据计算语法的SQL化
作者:蒋步星
来源:数据蒋堂
本文共1602字,建议阅读5分钟。
通过本文为大家解读为什么现在SQL变成了当前大数据计算语法的一个发展倾向。
回归SQL是当前大数据计算语法的一个发展倾向。在Hadoop体系中,现在已经很少有人会自己从头来写MapReduce代码了,PIG Latin也处于被淘汰的边缘,而HIve却始终坚挺;即使是Spark上,也在更多地使用Spark SQL,而Scala反而少很多。其它一些新的大数据计算体系一般也将SQL作为首选的计算语法,经过几年时间的混战之后,现在SQL又逐步拿回了主动权。
这个现象,大概有这么两个原因:
1. 实在没什么别的好用
关系数据库过于普及,程序员对SQL相当熟悉,甚至思维习惯都是SQL式的。SQL用来做一些常规查询也比较简单,虽然用于处理复杂的过程计算或有序运算并不方便,但其它那些替代技术也好不到哪里去,碰到SQL难写的运算一样要写和UDF相当的复杂代码,反正都是麻烦,还不如继续用SQL。
2. 大数据厂商的鼎力支持
大数据的技术本质是高性能,而SQL是性能比拼的关键阵地。比性能要面对同样的运算才有意义,过于专门和复杂的运算涉及的影响因素太多,不容易评估出大数据平台本身的能力。而SQL有国际标准的TPC系列,所有用户都看得懂,这样就有明确的可比性,厂商也会把性能优化的重点放在SQL上。
那么,回归SQL好吗?特别地,我们说,大数据的技术本质是高性能,回归并优化SQL对提高计算性能有多大帮助?
那要看是什么运算!
对于比较简单的查询,特别是多维分析式的查询,用SQL确实是不错的。这种运算被传统数据库厂商研究了几十年,实践出很多行之有效的优化手段。而Hadoop这种新型大数据平台,正好可以实习和实施这些经验,在性能上就更容易超越其它语法体系。
但是,对于更常见的过程性计算,SQL并不好用,不仅是开发困难,代码要写很长,而且对于提高性能也很难有什么帮助。
什么是过程性计算呢?就是一步写不出来,需要多次分步运算,特别是与数据次序相关的运算。
我们举几个例子来看:
股票连续3天上涨后再涨1天的概率和平均涨幅,按所属板块和时间段分类对比
与去年同期的收入销售额对比分析,要考虑到节假日的影响
一周内累计登录时长超过一小时的用户占比,但要除去登录时长小于1分钟的误操作情况
信用卡在最近三个月内最长连续消费的天数分布情况,考虑实施连续消费10天后积分三倍的促销活动
……
(为了便于理解,这些例子已经做了简化,实际情况的运算还要复杂很多)
对于过程性运算,用SQL写出来的难度就很大,经常还必须要写UDF才能完成。如果SQL写都写不出来,那么指望优化SQL来提高性能也就无从谈起了。有时候能用SQL勉强写出来,代码也会相当复杂,而复杂SQL的优化效果是很差的,在嵌套几层之后,数据库引擎也会晕掉,不知道如何优化。
举一个以前举过的简单例子,在1亿条记录中取最大的前10名,SQL本身没有集合数据类型,理论上会用比较笨的办法,先排序再找前10名。但好一点的数据库引擎都能优化这件事,碰到这样的SQL语句不会真地去做大排序。但是,如果这个运算写到了分组或者子查询里面(写法会不一样了),数据库引擎就未必能识别出来再做优化了。
提高这些复杂运算的性能,指望计算平台的自动优化是靠不住的,根本手段还要靠编写出高性能的算法。象过程运算中还常常需要保存中间结果以复用,SQL需要用临时表,多了IO操作就会影响性能,这都不是引擎优化能解决的事情,必须要去改写计算过程。
事实上,提高性能的本质实际上还是降低开发难度。软件无法提高硬件的性能,只能想办法设计复杂度更低的算法,而如果能够快速低成本地实现这些算法,那就可以达到提高性能的目标。如果语法体系难以甚至没办法描述高性能算法,必须迫使程序员采用复杂度较高的算法,那也就很难再提高性能了。显然,优化SQL运算几乎无助于降低它的开发难度,SQL语法体系就是那样,无论怎样优化它的性能,开发难度并不会改变,很多高性能算法仍然实现不了,也就难以实质性地提高运算性能。
编写UDF在许多场景时确实能提高性能,但一方面开发难度很大,另一方面这是程序员硬写的,也不能利用到SQL引擎的优化能力。而且经常并不能将完整运算都写成UDF,只能使用计算平台提供的接口,仍然要在SQL框架使用它的数据类型,这样还是会限制高性能算法的实现。
专栏作者简介
润乾软件创始人、首席科学家
清华大学计算机硕士,著有《非线性报表模型原理》等,1989年,中国首个国际奥林匹克数学竞赛团体冠军成员,个人金牌;2000年,创立润乾公司;2004年,首次在润乾报表中提出非线性报表模型,完美解决了中国式复杂报表制表难题,目前该模型已经成为报表行业的标准;2014年,经过7年开发,润乾软件发布不依赖关系代数模型的计算引擎——集算器,有效地提高了复杂结构化大数据计算的开发和运算效率;2015年,润乾软件被福布斯中文网站评为“2015福布斯中国非上市潜力企业100强”;2016年,荣获中国电子信息产业发展研究院评选的“2016年中国软件和信息服务业十大领军人物”;2017年, 自主创新研发新一代的数据仓库、云数据库等产品即将面世。
数据蒋堂
《数据蒋堂》的作者蒋步星,从事信息系统建设和数据处理长达20多年的时间。他丰富的工程经验与深厚的理论功底相互融合、创新思想与传统观念的相互碰撞,虚拟与现实的相互交织,产生出了一篇篇的沥血之作。此连载的内容涉及从数据呈现、采集到加工计算再到存储以及挖掘等各个方面。大可观数据世界之远景、小可看技术疑难之细节。针对数据领域一些技术难点,站在研发人员的角度从浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己的思考和理解。蒋步星还会对大数据的发展,站在业内专家角度给予预测和推断。静下心来认真研读你会发现,《数据蒋堂》的文章,有的会让用户避免重复前人走过的弯路,有的会让攻城狮面对扎心的难题茅塞顿开,有的会为初入行业的读者提供一把开启数据世界的钥匙,有的甚至会让业内专家大跌眼镜,产生思想交锋。
往期回顾:
数据蒋堂 | JOIN延伸 - 维度概念
数据蒋堂 | JOIN提速 - 有序归并
数据蒋堂 | JOIN提速 - 外键指针的衍生
数据蒋堂 | JOIN提速 - 外键指针化
数据蒋堂 | JOIN简化 - 意义总结
数据蒋堂 | JOIN简化-消除关联
数据蒋堂 | JOIN简化 - 维度对齐
数据蒋堂 | JOIN运算剖析
数据蒋堂 | 迭代聚合语法
数据蒋堂 | 非常规聚合
数据蒋堂 | 再谈有序分组
数据蒋堂 | 有序分组
数据蒋堂 | 非等值分组
数据蒋堂 | 还原分组运算的本意
数据蒋堂 | 有序遍历语法
数据蒋堂 | 常规遍历语法
数据蒋堂 | 从SQL语法看离散性
数据蒋堂 | 从SQL语法看集合化
数据蒋堂 | SQL用作大数据计算语法好吗?
数据蒋堂 | SQL的困难源于关系代数
数据蒋堂 | SQL像英语是个善意的错误
数据蒋堂 | 开放的计算能力为数据库瘦身
数据蒋堂 | 计算封闭性导致臃肿的数据库
数据蒋堂 | 怎样看待存储过程的移植困难
数据蒋堂 | 存储过程的利之弊
数据蒋堂 | 不要对自助BI期望过高
数据蒋堂 | 报表的数据计算层
数据蒋堂 | 报表应用的三层结构
数据蒋堂 | 列式存储的另一面
数据蒋堂 | 硬盘的性能特征
数据蒋堂 | 我们需要怎样的OLAP?
数据蒋堂 | 1T数据到底有多大?
数据蒋堂 | 索引的本质是排序
数据蒋堂 | 功夫都在报表外--漫谈报表性能优化
数据蒋堂 | 非结构化数据分析是忽悠?
数据蒋堂 | 多维分析的后台性能优化手段
数据蒋堂 | JOIN延伸 - 维度查询语法
数据蒋堂 | 文件的性能分析
数据蒋堂 | RDB与NoSQL的访问性能
数据蒋堂 | 报表开发的现状
数据蒋堂 | 谈谈临时性计算
校对:林亦霖
为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错。
若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包。
同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。
感谢一直以来您的关注和支持,希望您能够监督数据派产出更加高质的内容。
数据蒋堂 | 大数据计算语法的SQL化相关推荐
- 数据蒋堂 | 大数据技术的4个E
作者:蒋步星 来源:数据蒋堂 本文共1100字,建议阅读8分钟. 本文将大数据特点总结成4个E,可作为选择大数据技术解决方案的参考. 大数据的4个V说法在业界已经尽人皆知,这是指的大数据本身的特征.现 ...
- 数据蒋堂 | 大数据集群该不该透明化?
作者:蒋步星 来源:数据蒋堂 本文约1500字,建议阅读5分钟. 通过本文为大家解读大数据集群透明化的利弊! 这好像是个多余的问题,大部分大数据平台都把集群透明化作为一个基本目标在努力实现. 所谓集群 ...
- 数据蒋堂 | 大清单报表应当怎么做?
作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读9分钟.在数据查询时,有时会碰到数据量很大的清单报表. 在数据查询时,有时会碰到数据量很大的清单报表.用户输入的查询条件很宽泛,可能会从数据库中 ...
- 数据蒋堂 | 谈谈临时性计算
作者:蒋步星 来源:数据蒋堂 本文约2000字,建议阅读5分钟. 通过本文带大家评估了一下三种处理临时性计算的优劣. 临时性计算,顾名思义,是指临时发生的一些计算需求.这种计算在日常数据处理中很常见, ...
- 数据蒋堂 | 大清单报表的打印?
作者:蒋步星 来源:数据蒋堂 本文共900字,建议阅读5分钟. 报表打印也需要做一个缓存机制吗? 上一期文章<大清单报表应当怎么做?>中,我们谈了大清单报表的呈现方法,其实有时候这些报表还 ...
- 数据蒋堂 | 时序数据从分表到分库
作者:蒋步星 来源:数据蒋堂 本文共5500字,建议阅读10+分钟. 一个物理表的数据量太大时,就会影响查询和计算的性能. 这里的时序数据泛指一切随时间推移而不断增长的数据,比如通话记录.银行交易记录 ...
- 新手入门大数据,大数据的入门!!!认识大数据
大数据介绍 大数据的由来 大数据的应用领域 大数据方面核心技术有哪些? 一.数据采集与预处理 Flume NG NDC Logstash Sqoop 流式计算 Zookeeper 二.数据存储 HBa ...
- print的describe的展示全部数据_大数据项目中的QA需要迎接新的挑战
根据IDC全球半年度大数据和分析支出指南的最新预测,到2022年全球大数据和业务分析解决方案的收入将达到2600亿美元.在大数据和业务分析解决方案上投资增长最快的行业包括银行(复合年增长率13.3%) ...
- 管道过滤模式 大数据_大数据管道配方
管道过滤模式 大数据 介绍 (Introduction) If you are starting with Big Data it is common to feel overwhelmed by t ...
最新文章
- ubuntu9.10升级成功
- wine清除软件残余图标
- android 百度移动搜索 url 参数,百度移动搜索开放适配服务的3种方法
- Lync Server 2010迁移至Lync Server 2013部署系列 Part18:开启Lync 2013 Mobility
- mybatis转义反斜杠_MyBatis Plus like模糊查询特殊字符_、\、%
- Breadth-first Search(广度优先搜索)专题1
- 编写lisp程序解一元二次方程_用C语言编写一程序求解一元二次方程的根。
- oracle procedure可以执行非常复杂的语句吗,oracle-存储过程(procedure)
- 深度学习模型参数初始化的方法
- PyTorch中的生成对抗网络(GAN)
- 计算机中的PS颜色填充快捷键,ps颜色填充快捷键是什么
- WEB安全——文件上传
- 关于ps cs6的滤镜 (抽出)
- 8.15-30题目归档
- Excel数据分析系列之用好底层分析工具统计分析功能
- 3DMax 安装 超图 插件
- java cobar_alibaba的COBAR真是强大.
- Python将多个excel文件合并为一个文件
- 同时使用动态库和静态库时怎么写makefile
- cas和saml_结合使用SAML安全令牌和Microsoft Web Services增强功能
热门文章
- Swift之Vision 图像识别框架
- 在启动activity之前,调用application的oncreate
- Syslog-ng+Rsyslog收集日志:logrotate日志切割、轮询(七)
- centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网...
- 实战KVM|kvm安装|创建linux|控制台|克隆
- 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
- Forefront_TMG_2010-TMG建立站点间***
- 文件查找利器---find详解
- mysql创建存储过程权限问题
- 深入理解按位异或运算符