KSQL是Apache Kafka的开源流SQL引擎。它为Kafka的流处理提供了一个简单而完全交互的SQL界面; 不需要用编程语言(如Java或Python)编写代码。KSQL是开源(Apache 2.0许可),分布式,可扩展,可靠和实时的。它支持广泛的强大的流处理操作,包括聚合,连接,窗口化,会话化等等。
Kafka的作者Neha Narkhede在Confluent上发表了一篇博文,介绍了Kafka新引入的KSQL引擎——一个基于流的SQL。推出KSQL是为了降低流式处理的门槛,为处理Kafka数据提供简单而完整的可交互式SQL接口。
KSQL与传统SQL的区别
KSQL与关系型数据库中的SQL还是有很大不同的。传统的SQL都是即时的一次性操作,不管是查询还是更新都是在当前的数据集上进行。而KSQL则不同,KSQL的查询和更新是持续进行的,而且数据集可以源源不断地增加。KSQL所做的其实是转换操作,也就是流式处理。
KSQL的适用场景
- 实时监控:一方面,可以通过KSQL自定义业务层面的度量指标,这些指标可以实时获得。底层的度量指标无法告诉我们应用程序的实际行为,所以基于应用程序生成的原始事件来自定义度量指标可以更好地了解应用程序的运行状况。另一方面,可以通过KSQL为应用程序定义某种标准,用于检查应用程序在生产环境中的行为是否达到预期。
- 安全检测:KSQL把事件流转换成包含数值的时间序列数据,然后通过可视化工具把这些数据展示在UI上,这样就可以检测到很多威胁安全的行为,比如欺诈、入侵,等等。KSQL为此提供了一种实时、简单而完备的方案。
- 在线数据集成:大部分的数据处理都会经历ETL(Extract——Transform——Load)这样的过程,而这样的系统通常都是通过定时的批次作业来完成数据处理的,但批次作业所带来的延时在很多时候是无法被接受的。而通过使用KSQL和Kafka连接器,可以将批次数据集成转变成在线数据集成。比如,通过流与表的连接,可以用存储在数据表里的元数据来填充事件流里的数据,或者在将数据传输到其他系统之前过滤掉数据里的敏感信息。
- 应用开发:对于复杂的应用来说,使用Kafka的原生Streams API或许会更合适。不过,对于简单的应用来说,或者对于不喜欢Java编程的人来说,KSQL会是更好的选择。
目前KSQL已根据Apache许可证2.0版授权进行了开源,但是当前还是beta版本。相关源码已上传只github:https://github.com/confluentinc/ksql
参考资料
- Introducing KSQL: Open Source Streaming SQL for Apache Kafka
: » Apache Kafka的流式SQL引擎KSQL简介
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/252362.html