Spark 高难度对话 SQL Server 续篇

2019-12-25 11:56:25 浏览数 (1)

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

Spark 指着第一幅,清了清嗓子,开始了:

这是基础原理图,在所有用到我们的程序里,都是 RDD 做引子。定义好 RDD 的数据源,转换操作以及行为操作,剩下的都是集群里的哥们负责处理,用户都是小白,啥都不用设计,就像 T-SQL 一样,表定义好了,函数和存储过程一写,数据流怎么动,都是引擎的事儿。

关键的问题我也罗列出来了,回答出来这块就差不多了。

接下来,再看看如何提交我们的 Spark SQL 怎么去连你们的 SQL Server.

image

通常 Spark SQL 程序都会有一个引子程序,叫做 driver. 我们定义 RDD 的数据源,转换以及操作都是在 driver 里完成。

但是和其他语言不一样的是,我们定义的 RDD 操作,并不是每一步都随行同步执行的。这一点非常关键,否则你无法理解,我们的并行处理。

一般的解释性语言或者编译型语言,代码执行到哪一步,那一步就会执行响应的操作。但 Spark 却不是。代码的执行,在 transformation 阶段,也只不过是在完成数据流的定义而已,真正执行数据的统计等聚合操作,都是在 action 阶段。

这幅图,完成的就是并行连接 SQL Server 读取大数据量的表,拉取到 Spark 集群做处理。注意,这里必须有分区来提高读取速度。

比较费解的是,这些 Jar 路径的配置,这一块是我们永远的痛。

知道你在想啥,你肯定是想,用 c# 完善一套序列化和反序列化的操作,一样可以实现分布式处理嘛,再把 SQL 关系引擎的实现,加入一层网络文件系统,一样实现我们的功能,对吧!

SQL Server: 不好意思,我认为还确实是这样!

Spark: 不可能,就问一个问题,你们舍得免费么!

最后一张图,复杂一些,看仔细咯:

image

正确操作 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

L 看完,想起一句话 “小孩子才分对错,成年人,只看利弊”。Spark 固然年轻可畏,却也架不住老司机的算计。In Memory 这种半残次作品,早该用 Spark 来代替了。

0 人点赞