GIIS (Global Information Industry Summit)峰会已经进行如火如荼进行了半程。商业数据库这边明显已经冷了下来,$1100 一天的峰会价格,并不是每个企业都吃得消,再者,在东半球上海举行的 QCon 已经吸引了更多的关注,那里的互联网应用似乎更加吸引资本的青睐,入会价格同样不低,接近 6K RMB ,好在是全场票。
L 这两天拿着 Spark, Hive, Hadoop 的资料,欣喜若狂。作为技术爱好者,有机会和同门师兄弟切磋,对于一个黄金单身汉来说,简直比遇见苍老师还兴奋。 这么大阅读量,怎么能少了每一天一杯星巴克。这会儿才 7 点,L已经拿着大杯焦糖拿铁,坐在星巴克硕大的落地窗前,看起资料来。
9 点峰会正式开场,只是准时来参加峰会的人比起前两天少了许多,又或许都是单位付费,大家都选择更晚的 10 点来参与。毕竟 5 星级酒店的自助餐,要好好享用嘛。
趁着空档,L 看到 SQL Server 和 Spark 两人又出来放风,抽烟了。 L 拿起杂志,悄悄的站在离他们俩不远的巴洛克风柱旁。
SQL Server: 小 S ,你们那边生意可真好。我们这里都准备收拾回家了,你们那边好像下半场才刚刚开始一样。好生羡慕,这好让我怀念 7,8年前的 MS SQL Summit. 谁都有年轻,芳华正茂的时候啊。
Spark: 大 S ,你也别惆怅了,你们 RDBMS 都风光多少年了。三十年河西,也该轮到我们了。放心吧,后浪只会推你们前浪,绝对拍不死你的。
说完,两人又是俯首大小,笑得跟兄弟一样亲。
L 看着两人的背影,想着明年就到 30 岁的坎了,也是唏嘘不已,MD,老子连浪都没见过呢。
SQL Server : 这几年我们最精湛的几个维修师傅都出逃了,能守住一片田地也实属不易。往后的日子真不知道怎整。昔日的辉煌可能很难维系。这把老骨头也经不起折腾了。
Spark 弹了弹烟头燃尽的灰落,“这老家伙,今天这么失落,不会是来套话的吧”。想虽然这么想,但毕竟也不好得罪这北美市场的老大哥,话说出来,却另改了一番口吻,“瘦死的骆驼,比马大。北美市场以及欧洲市场,你们还是不可动摇的扛把子。我们就不一样了,身形小,资本少,说没就没,还得依仗大哥们拉一把”
SQL Server 先是眉头一紧,心里也翻着不小的嘀咕,“这届年轻人,口风真紧”。接着眼开口笑,说道,“市场与资本风向,普遍倾向于你们年轻人,你看 Hortonworks 和 Cloudera 两家的合并,吸引了多少资本进去。这么强大的平台,可谓是巨人的肩膀啊,你们 Spark 却牢牢站在了风口。”
Spark : 说起这个事来,真还不让我省心。本来抱一家大腿就可以了。现在两家合并了,反而想抱也抱不紧了。那么多小弟都盯着这头巨象,Flink, MapR, Kylin, 都是曾经的小弟,给谁不给谁,大哥们也为难。外人看我们容易,平台大了,市场更多了,实际上这世界只认第一啊,谁能给第二容下一点点余地呢。
SQL Server : 那这么说,我们更愁。被 O 记压了那么多年,好不容易稳住了,却由面临你们年轻人的挑战。
Spark: 成年人的世界哪有 TMD 容易两字呢!
SQL Server: 说得真好,这话谁说的?
Spark: 好像是,尼古拉斯凯奇吧。在他《天气预报员》那片子里,这片子适合你看,抽空看看。
SQL Server: 就是那背着弓箭到处跑的那个主角吧。没错,中年男人,倒是一点都不油腻,只是比较废。
SQL Server: 有时间吗,给我讲讲你们的内幕呗。
Spark: 我们一窝子都是壮士,有啥好讲的,你们那里不是妹子多嘛。门口站着的“海瑟薇”,花多少美金雇来的
SQL Server: 又不正经了,那是哈佛商学院来的市场总监。我想要听听你们的技术内部原理。毕竟技术出身,还是对代码感兴趣,可能唯一能抓得住的也就是代码了。
转身看了眼“海瑟薇”,SQL Server 一个念想,“上一次碰自家媳妇,还是8年,9年前?,老了真不中用!可怜我的老母亲,连个孙子都还没报上……”
“走走走,我这回请你星爸爸”
“那还等什么,走呗。我要玛奇朵啊,超大杯的”
L 可喜坏了,这么大杯下去,还不兴奋的讲个不停,拿起手中的星冰乐,疾步跟了进去。
Spark 正借着 Starbucks的黑墙,画着几幅草图,当 L 找个好位置坐定的时候,Spark 也画完了 3 幅画中的最后的一幅。
![image image](http://wx1.sinaimg.cn/large/75b975bfgy1fwcqtao0jpj20jc0fodgm.jpg)
Spark 指着第一幅,清了清嗓子,开始了:
这是基础原理图,在所有用到我们的程序里,都是 RDD 做引子。定义好 RDD 的数据源,转换操作以及行为操作,剩下的都是集群里的哥们负责处理,用户都是小白,啥都不用设计,就像 T-SQL 一样,表定义好了,函数和存储过程一写,数据流怎么动,都是引擎的事儿。
关键的问题我也罗列出来了,回答出来这块就差不多了。
接下来,再看看如何提交我们的 Spark SQL 怎么去连你们的 SQL Server.
![image image](http://wx3.sinaimg.cn/large/75b975bfgy1fwcqtknm9dj21gv0nxjsq.jpg)
通常 Spark SQL 程序都会有一个引子程序,叫做 driver. 我们定义 RDD 的数据源,转换以及操作都是在 driver 里完成。
但是和其他语言不一样的是,我们定义的 RDD 操作,并不是每一步都随行同步执行的。这一点非常关键,否则你无法理解,Spark 的并行处理。
一般的解释性语言或者编译型语言,代码执行到哪一步,那一步就会执行响应的操作。但 Spark 却不是。代码的执行,在 transformation 阶段,也只不过是在完成数据流的定义而已,真正执行数据的统计等聚合操作,都是在 action 阶段。
这幅图,完成的就是并行连接 SQL Server 读取大数据量的表,拉取到 Spark 集群做处理。
比较费解的是,这些 Jar 路径的配置,这一块是我们永远的痛。
知道你在想啥,你肯定是想,用 c# 完善一套序列化和反序列化的操作,一样可以实现分布式处理嘛,再把 SQL 关系引擎的实现,加入一层网络文件系统,一样实现我们的功能,对吧!
SQL Server: 不好意思,我认为还确实是这样!
Spark: 不可能,就问一个问题,你们舍得免费么!
最后一张图,复杂一些,看仔细咯:
![image image](http://wx4.sinaimg.cn/large/75b975bfgy1fwcqtr5mn8j21ge0nl77j.jpg)
正确操作 Spark SQL 的两种方式:一是 DataSet/DataFrame 的DSL, 一种是 Spark 纯 SQL 方式。DSL 类似于 c# 的 LINQ, 不过你们的名字很欧口,LINQ,怎么读呢,Q的发音是ke吗?反正就是类似的一套 api 接口,看 scala 源代码就知道怎么玩弄这些 api 了。
这张图内涵就不讲了,太多了。够你消化段时间了。谢谢你的咖啡,回头见
SQL Server: 怪人!
说完,拿出新买的 iPhone X MAX, 啪啪的亮了几下,灌了一口咖啡,低头琢磨起来。
L 看着SQL Server 壮实却略驼的背影,看似年轻,可华发已生,心里好一阵凄凉,难道这就是技术人的一生?飞速的手指,划拉着屏幕,旁边的“苏菲”,明显已经抗议表示电量吃紧了。借着还杂志的空档,L 故意放慢脚步来到 SQL Server 旁边瞅了一眼,只见 “ SQL 2019 ” 红字标题跃然于苏菲笔记本屏幕之上。12.1 英寸的屏幕上,印着刚做完的草图
![image image](http://wx1.sinaimg.cn/large/75b975bfgy1fwctqlvb3tj211v0br3zp.jpg)
L 看完,想起一句话 “小孩子才分对错,成年人,只看利弊”。Spark 固然年轻可畏,却也架不住老司机的算计。In Memory 这种半残次作品,早该用 Spark 来代替了。