现在还没有一个统一的流式SQL语法标准,各家都在做自己的。本文在一些业界应用的基础上提出了一个统一SQL语法的建议。Spark同样存在这个问题,社区版本在流式SQL上迟迟没有动作。EMR Spark在今年上半年提供了自己设计版本的流式SQL支持,也会在后续的更新中吸收和支持这些优秀的设计建议。
原文:https://blog.acolyer.org/2019/07/03/one-sql-to-rule-them-all/
在数据处理方面,似乎最终都会回归到SQL上!今天选择的这篇文章作者来自于Apache Beam,Apache Calcite以及Apache Flink的专家们,阐述了他们在构建流式处理SQL接口的经验。最终整理了一些SQL标准的扩展建议。
The thesis of this paper, supported by experience developing large open-source frameworks supporting real-world streaming use cases, is that the SQL language and relational model as-is and with minor non-intrusive extensions, can be very effective for manipulation of streaming data.
这篇文章的论点是,在开发使用大规模开源框架解决现实世界的实际流式场景经验下,SQL语言及关系性模型在当前及非侵入式扩展后,对于流数据的操作非常有效。
文章中很多观点已经在Apache Beam,Apache Calcite以及Apache Flink中实现,或者作为众多选择之一。Streaming SQL已经在阿里巴巴,华为,Lyft,Uber及其他一些公司中应用。下面是一些他们的反馈,为啥做这样的选择:
- 开发和应用成本相对于那些非声明性流处理 API要低得多。
- 比起非标准化的查询语言,熟悉SQL更容易开发应用。
- 常见的窗口聚合及join等处理任务,基于event-time可以更方便的表达及更高效的执行。
- 当应用出错或者服务中断时,可以很方便地使用同一个查询语句对记录存储的数