在streaming process中为什么需要类似sql查询语言

从现有的CEP(Complex Event Processing)框架,像强大得Esper,我们学到很多工作完全可以通过写sql来完成的,不需要编写任何的代码。所以对于流处理我认为也需要这样的类似sql查询语言。目前像Storm这样的流处理平台框架强迫使用者去实现像silding window,一些query pattern的操作。我认为并不是每一个案例开发者都喜欢重写这些东西。

所以我们需要high level的抽象,我可以完全把一些算法封装好,直接拼装调用即可,或者直接支持sql语法。我们可以从Hive for HadoopSpark SQLapache Flink中学习到很多。

下面列举一下为什么需要类似sql查询语言的原因:

1. 实时分析很复杂,业务开发人员很不情愿去实现一些像sliding window,或者时间事件模式的算法;

2. SQL简单,很容易理解和学习,开发成本低;

3. SQL语言简短通用,而且快

4. SQL自身的核心语法可以解决90%的问题

5. 历年来BI专家倾向的语言

6. 实时分析可以更好的优化SQL语言模型的执行计划,大部分的优化操作已经在研究,有些已经研究出来了可以直接拿过来用。

Why We need SQL like Query Language for Realtime Streaming Analytics?

时间: 2024-11-07 15:01:33

在streaming process中为什么需要类似sql查询语言的相关文章

Calcite中的流式SQL

Calcite中的流式SQL Calcite中的流式SQL总体设计思路 总体语法应该兼容SQL,这个是和目前流处理SQL的发展趋势是一致的. 如果部分功能标准SQL中没有包含,则尽量采用业界标杆(Oracle).比如模式匹配的功能,目前流处理中还没有针对语法达成共识,那么在设计上,就采用Oracle data warehouse的Match Recognize的方式.还有滑窗功能. 如果还有功能目前业界标杆都没有,那么就通过函数的方式拓展,翻滚窗口和跳动窗口,这两个窗口在标准SQL中都是不包含的

批量 kill mysql 中运行时间长的sql

转自:思齐-批量 kill mysql 中运行时间长的sql 以下内容来自mysql手册: 13.5.5.3. KILL语法KILL [CONNECTION | QUERY] thread_id每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程. KILL允许自选的CONNECTION或QUERY修改符: · KILL CONNECTION与不含修改符的KILL一样:它会终止与给

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio

在MyEclipse中编辑和执行SQL

数据库资源管理器工具包括了一个智能的SQL编辑器.在SQL编辑器中可以打开一个数据库连接,使其可以执行SQL语句并自动完成SQL相关片段的执行.在本教程中,你将学习到: 启动和使用SQL代码完成功能 执行SQL语句 生成SQL查询和表创建的脚本 更改SQL命令分隔符 持续时间:10分钟 没有MyEclipse?立即下载 1. 启用SQL代码完成功能 SQL代码完成功能要求预装编辑器相关数据库的元数据.在默认的情况下,SQL代码完成功能是被禁用的,这是为了避免严重的性能问题,因为此功能可能导致在非

Sql Server中如何快速修正SQL 语句错误

本文将和大家讨论一些关于找SQL 错误的问题. 现在的系统基本都是需要用到数据库的,既然用到数据库我们就要写SQL 脚本,常用的做法是现在Microsoft Sql Server Management Sudio写好调试好,然后贴到 代码中,但这样就能保证我们的SQL 脚本正常运行吗?那如果带参数的SQL 或存储过程出现问题呢?如果数据出现问题,我们应该怎么找出错误的SQL 呢? 带着这个疑问,开始我们今天的讨论.以前用代码和数据库打交道,出现数据问题,我们会打个断点一步一步的调试,就像这样:

DAL中的一句sql总是提示'@pagesize'附近有语法错误。

我的页面一运行就提示'@pagesize' 附近有语法错误.但是我在数据库里直接查询,把那些参数替换掉就OK,这句SQL我不知道到底错在哪里 C# code string sql = "select top @pagesize from member where userid not in(select top(@pagesize*(@pagecount-1)) userid from member order by userid) order by userid"; --------

在Android(Java)开发中如何实现类似C语言中的中断程序

在Android开发过程中,有时候会遇到这样的情况,在一个线程中,执行A操作,B操作需要等A操作结束后才进行,因此需要wait,在java中可以如下代码实现 Handler mBlueHandler = new Handler(Looper.getMainLooper()); Task task = new Task(); mBlueHandler.post(task); while (!task.finish) { synchronized (task) { try { task.wait()

处于同一域中的两台SQL Server 实例无法连接

处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is

在英文版操作系统中安装的MS SQL server,中文字段无法匹配

在英文版的操作系统中安装的MS SQL server,会出现中文字段无法被匹配到.其原因在于英文环境下安装的MS SQL server的排序规则不包括中文. 所以解决办法就是更改MS SQL server的排序规则:一般情况下,只需要右键数据库->properties->optiones->collation->chose "Chinese RPC CI AS"->OK.如果执行成功则OK. 但是如果数据库中设置了一些临时表的依赖,那么执行会报错. 解决办