首页 » 网站建设 » phpstreamstorm技巧_大年夜数据上的流式SQL引擎StreamCQL

phpstreamstorm技巧_大年夜数据上的流式SQL引擎StreamCQL

访客 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

在最近的一次meetup上,华为实时剖析团队高等技能专家、StreamCQL核心作者何志强对该项目进行了先容。
StreamCQL作为华为FusionInsight大数据平台的主要组件,供应了在分布式流处理平台上的类SQL查询能力,包括窗口打算等高等特性,在开源之前已经在电信、金融等多个行业成功运用,这次StreamCQL开源目的是让更多的社区开拓爱好者、包括用户、认证伙伴加入到项目的开源贡献和运用中,以更好的开源项目来做事用户,发展社区。
华为作为大数据平台的主要供应商,最近加快了在开源上的步伐,在之前几个月,其开源了另一个大数据项目astro(Spark SQL on HBase package)。

StreamCQL是一个类SQL的声明式措辞,它用于在流(streams)和可更新关系(updatable relation)上的可持续查询,目的是在流处理平台分布式打算能力之上,通过利用大略单纯通用的类SQL措辞,使得业务逻辑的开拓变得统一和大略单纯。
在功能上,StreamCQL填补了传统流处理平台上一些基本业务功能的缺失落,除了过滤、转换等基本SQL能力之外, 还引入基于内存窗口的打算、统计、关联等能力,以及流数据的拆分、合并等功能。
下图是StreamCQL的功能架构图。

phpstreamstorm技巧_大年夜数据上的流式SQL引擎StreamCQL

图1:StreamCQL的功能架构图

phpstreamstorm技巧_大年夜数据上的流式SQL引擎StreamCQL
(图片来自网络侵删)

StreamCQL在逻辑架构上和通用的SQL引擎比较相似,包含了语法剖析、语义剖析、逻辑优化、物理实行操持和引擎适配这些部分。
不同的是,由于处理的是流数据,以是StreamCQL必须定义流和窗口这些观点,并基于这些观点,定义干系的语法、算子并进行逻辑优化和物理方案。
其余,通过引擎适配,StreamCQL除了可以支持目前主流的Storm流处理引擎,也可以在将来支持其它的流处理引擎,如Flink。

下面,先先容一下StreamCQL中对流和窗口的定义。

流:一个流便是一组(无穷)元素的凑集,我们用 <s, t> 表示元组s在韶光t到达流。
窗口便是一个有限范围内、任意一个韶光点的数据状态快照。

图2:流和窗口的关系

窗口观点的提出,让流中的数据有了边界,此时窗口中的数据等同于数据库中的静态表,以是可以数据表一样被实行各种操作和查询,在后面我们会给出干系的示例。
StreamCQL支持的窗口种类也是比较多的,比如按事宜数量、按韶光范围和按自然天的窗口,同时在窗口的移动上,也支持两种办法,即跳动窗口和滑动窗口,如图3和图4所示。
可以看出,跳动窗口是在固定的韶光间隔下进行窗口的移动,一次性打消窗口中之前的数据,而滑动窗口则是在窗口时钟的驱动下,窗口随之滑动,将滑动到窗口之外的数据打消。

图3:基于跳动窗口的示意图

图4:基于滑动窗口的示意图

由于SteamSQL采取了类SQL的语法,以是在编写运用时要比利用原生的Storm API简洁的多,图5是一个大略运用下的语法比拟。

图5:StreamCQL和Storm API的语法比拟

下面我们再举一些实际的例子,来解释StreamCQL的在流处理场景中的实际利用。

第一个流处理示例比较大略,该示例会从Kafka中读取数据,然后统计条数,之后将统计结果写入Kafka的其余一个topic中。

1) 首先创建一个输入流s1,利用默认的反序列化办法来解析数据。

CREATE INPUT STREAM s1 -- 指定输入流的名称(id INT, name STRING, type INT) -- 流中字段类型SOURCEKafkaInput-- 指天命据源及干系的属性PROPERTIES (groupid = \公众cqlClient\"大众, topic = \公众cqlInput\"大众,zookeepers = \公众127.0.0.1:2181\"大众, brokers = \"大众127.0.0.1:9092\"大众 );

2) 然后创建输出流,利用默认的序列化办法输出数据。

CREATE OUTPUT STREAM s2 -- 指定输出流的名称(cnt LONG) -- 流中字段类型SINK kafakOutput -- 指天命据目的及干系属性PROPERTIES ( topic = \公众cqlOut\"大众, zookeepers = \公众127.0.0.1:2181\公众,brokers = \"大众127.0.0.1:9092\公众 );

3) 接下来,实行从输入流转化到输出流的StreamCQL语句,这个例子中只是统计事宜的条数。

INSERT INTO STREAM s2 SELECT count() FROM s1;

4) 末了,将上述语句构成的StreamCQL运用程序进行提交,并指定这个运用程序名称为cql_kafka_example。
一旦提交,系统就开始进行运用程序的解析和发布。

SUBMIT APPLICATION cql_kafka_example;

有了上面的根本,我们可以看一个更繁芜点的例子,这个例子中会将2个输入流(s1、s2)的数据进行合并,并标识来源,然后将合并后的流与另一个输入流(s3)进行窗口的Join操作,最终生成输出流(rs):

1) 创建输入流s1、s2和s3。

CREATE INPUT STREAM S1 (...) SOURCE KafkaInput PROPERTIES(...);CREATE INPUT STREAM S2...;CREATE INPUT STREAM S3...;

2) 创建输出流RS。

CREATE OUTPUT STREAM RS(...) SINK kafkaOutput PROPERTIES(...)

3) 将S1和S2中的元组插入到临时流S4中,并添加常量作为来源判断字段,1表示来自s1,2表示来自s2。

INSERT INTO s4 SELECT ,1 FROM S1;INSERT INTO S4 SELECT ,2 FROM S2;

4) 将S4和S3的窗口数据经由内连接(inner join)后插入到输出流中,详细的,S4的窗口是记录数为10的跳动窗口,S3的窗口是3小时的滑动窗口。
内连接的条件是s4的id字段即是s3的type字段,而且s4的id字段要大于5。

INSERT INTO STREAM rsSELECT FROM S4[ROWS 10 BATCH]INNER JOIN S3[RANGE 3 HOURS SLIDE]ON s4.id=s3.typeWHERE s4.id > 5;

上面这个示例运用程序提交后天生的Storm拓扑如图6所示。

图6:StreamCQL天生的Join功能的Storm拓扑

我们再看末了一个示例,和上面流的连接相反,这是个流拆分的例子,即从1个输入流拆分出3个输出流。
为了大略起见,我们只给出关键部分的语句:

FROM teststream -- 指定输入流INSERT INTO STREAM s1 SELECT -- 输入流所有字段都插入到输出流s1中INSERT INTO STREAM s2 SELECT a -- 输入流中字段a插入到输出流s2中INSERT INTO STREAM s3 SELECT id, name WHERE id > 10 --输入流中字段id、name插入到输出流s3中,且id必须大于10PRARLLEL 4; -- 输入算子的并发数量

这个示例最终生成的Storm拓扑如图7所示:

图7:StreamCQL天生的Split功能的Storm拓扑

上述便是StreamCQL的基本事理、架构和示例,简而言之,它为流式运用供应了非常便捷的类SQL的开拓措辞,你可以用它很方便的开拓干系运用,完成基于流的各种查询统计。
末了,StreamSQL开源后也有了一些新的方案方向,包括模式匹配、CQLServer、可靠性增强等。

(编辑:仲浩、李子健)

相关文章

大数据时代,进军浪潮中的企业机遇与挑战

随着互联网、物联网、人工智能等技术的飞速发展,大数据已成为当今世界最具影响力的趋势之一。各行各业都在积极探索如何利用大数据提升自身...

网站建设 2024-12-16 阅读0 评论0

大数据时代,角色与挑战

随着互联网、物联网、云计算等技术的飞速发展,大数据已经成为当今世界最具影响力的技术之一。大数据时代,各行各业都面临着前所未有的机遇...

网站建设 2024-12-16 阅读0 评论0

大数据时代,路上数据的变革之路

随着科技的飞速发展,大数据已成为各行各业关注的焦点。在众多领域,大数据的应用正在深刻改变着我们的生活方式。今天,让我们聚焦于路上的...

网站建设 2024-12-16 阅读0 评论0

大数据时代下球鞋行业的变革与创新

随着科技的飞速发展,大数据技术在各行各业的应用越来越广泛。球鞋行业作为时尚与科技的交汇点,也在大数据的助力下迎来了前所未有的变革。...

网站建设 2024-12-16 阅读0 评论0

大数据时代下的“Q绑”现象,介绍与应对

随着互联网技术的飞速发展,大数据时代已经到来。在这个时代,人们的生活、工作、娱乐等方面都受到了大数据的深刻影响。其中,“Q绑”现象...

网站建设 2024-12-16 阅读0 评论0