双11背后的黑科技:大数据实时计算如何为你量身定制? (3)

且不考虑实时流计算系统如何解决易用性这个问题,看下计算机科学发展过程中,类似问题是怎么解决的。人们希望编程可以容易一些,所以越来越多的高级编程语言被发明出来了;人们希望数据计算可以容易一些,然后就有了数据库,以及SQL语言——结构化查询语言;到了大数据时代,人们还在折腾离线批量计算的时候,就遇到的依靠计算引擎编程复杂的问题,最终通过把SQL语言应用到分布式离线计算系统上,解决了这个问题。而现在实时计算的迅速发展的现在,是否同样可以用SQL语言去解决这个问题?答案是肯定的。不过有许多细节的问题需要去推敲求证。

  实时流计算中的数据流,可以理解为一张动态的数据表

上文提及了离线批量计算模型和实时增量计算模型是有差异的,当SQL语言分别作用与批量计算和流式计算时,其语义也是需要发生变化的。批量计算和流式计算最主要的区别是前者计算的数据是有限的、后者计算的数据是无限的是不断采集进入系统的。当一个SQL查询作用在一批离线数据上面时,计算完成、输出结果,这条SQL查询也就完成了。映射到流式计算,当SQL查询触发计算,它是不会结束的,因为数据在持续不断地流入,按照离线SQL的语义,SQL结束之前,计算不会输出结果,这显然不是流计算期望的效果,所以流式SQL其本质应当是定义一系列流计算任务,同时这些任务是边执行边输出计算结果的。 

离线SQL处理的是静态数据表,而流式SQL处理的是数据流,SQL的计算语义(如求和、平均值、数据表连接等)作用在数据流上是否合理。理解这个问题需要做一个概念上的转换:离线SQL是把静态的数据表转换成另一张静态数据表;而实时流计算中的数据流,可以理解为一张动态的数据表(数据会不断增长的动态数据表)。不同的时刻这个数据表又不同的样子,执行SQL会得到不同的计算结果,把这些不同的计算结果像电影幻灯片放映一样串联起来,我们就得到了一张动态的结果表——流式SQL做的工作就是把一张动态数据表转换成另一张动态数据表,这样流SQL的计算语义就比较容易理解了。实时流计算系统要解决的问题就缩小到了“如何实现动态数据表的计算”上来。

  流SQL引擎的自动优化是当前主要的技术突破方向

实时流计算系统的易用性,是可以用SQL语言来解决的,网易流计算平台Sloth的生产实践也证实了这一理论。用户不再需要学习各种计算引擎的编程接口,不再需要调试分布式计算程序,不再需要自己维护流计算系统,只需要把原来跑在离线平台上的SQL迁移到实时流计算平台上,就可以完成复杂的实时计算逻辑。

用户端的工作大大减少了,实时流计算平台的工作势必是要增加的,其中比较困难的部分是如何把SQL查询转化成实际的计算逻辑,实现一个支持流式SQL的计算引擎,类似数据库引擎的角色,而且就像之前讨论的,这个引擎的计算逻辑必须符合“增量计算”模型。同时为了能让实时计算结果应用到各种各样的业务场景中,计算引擎需要能够对接各种存储角色,比如数据、消息队列、离线存储等。

双11大屏只是大数据实时流计算的一种应用场景,未来会有越来越多的实时计算场景,比如除了文本计算实时化,图像、语音计算也可以实时化,在线机器学习,物联网实时计算等。实时数据以及实时流计算场景的类型都是指数增长的,实时计算引擎会面临不小的挑战。基于SQL的流式计算描述也正在向前演化,会越来越多的纳入流计算特有的属性,比如输出触发、过期数据处理、多种规则的数据窗口划分等。流SQL引擎的自动优化也是当前主要的一个技术突破方向,相信未来实时流计算会随着技术的进步,应用得跟深入、更广泛。

双11背后的黑科技:大数据实时计算如何为你量身定制?

网易有数

企业级大数据可视化分析平台。面向业务人员的自助式敏捷分析平台,采用PPT模式的报告制作,更加易学易用,具备强大的探索分析功能,真正帮助用户洞察数据发现价值。

点击这里---免费试用。

了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzsds.html