1.什么是SQL Stream Builder
Cloudera Streaming Analytics(CSA)提供了一个易于使用的交互式SQL Stream Builder(SSB)作为服务,用于通过 SQL创建对数据流的查询。
SQL Stream Builder (SSB)是一个功能全面的交互式UI工具,可以使用SQL创建有状态的流处理作业。通过使用 SQL,您可以简单轻松地声明过滤、聚合、路由和以其他方式改变数据流的表达式。SSB 是一个作业管理接口,可用于在流上编写和运行 SQL,以及为结果创建持久数据 API。
1.1什么是Continuous SQL?
SSB会一直运行SQL语句,这称为Continuous SQL或Streaming SQL。Continuous SQL可以针对有界和无界的数据流运行。结果被发送到某种类型的接收器(sink),并且可以通过物化视图接口连接到其他应用程序。与传统 SQL 相比,Continuous SQL 中的数据有起点,但没有终点。这意味着查询会不断处理结果。当你在SQL中定义你的作业时,SQL语句将根据schema进行解释和验证。语句执行后,不断返回符合条件的结果。
1.2与Flink集成
SSB以交互式方式运行,你可以在其中快速查看查询结果并迭代SQL语法。执行的 SQL 查询在 Flink 集群上作为作业运行,对无限的数据流进行操作,直到被取消。这样你可以在SSB中创作、启动和监控流处理作业,因为每个 SQL 查询都是Flink作业。你可以在不使用Java的情况下提交Flink作业,因为SSB会在后台自动构建和运行Flink作业。
由于SSB与Flink集成,你可以借助Flink的能力选择exactly-once处理,使用event time处理数据流,使用savepoint保存作业,根据需求使用Flink SQL创建表以及使用各种connectors来丰富流数据。
2.SSB主要功能
SQL Stream Builder (SSB) 与Flink集成是开箱即用的,使用Flink SQL从Streaming SQL Console或内置模板直接创建表,如果想与BI工具集成,也可以创建物化视图(Materialized Views)。
•Flink SQL
SQL Stream Builder允许你直接在Streaming SQL Console中使用DDL,DML和查询。
•Built-in Templates
SSB中的内置模板允许你简单快速的创建表,你只需要为模板设置连接和作业特定信息即可在 SSB 中使用它。
•Streaming SQL Console
SSB带有一个交互式UI,可让你轻松创建和管理SQL作业,它所包含的强大功能还可以让你创建和迭代SQL语句。查询解析被记录到控制台,结果被采样回前端,从而可以让你根据需要迭代SQL语句。
•Materialized Views
SSB能够将Streaming SQL查询的结果持久化保存到PostgreSQL数据库中并提供RESTful API供访问,应用程序可以利用该特性以高性能的方式查询数据流,而无需部署额外的数据库。物化视图内置于SQL Stream Builder服务中,无需配置或维护。物化视图就像一种特殊的sink,甚至可以用来代替sink。它们不需要索引、存储分配或专门管理。
•Input Transform
如果你不知道传入数据的结构,比如正在从传感器收集原始数据,你可以使用Input Transform对传入数据进行清洗和转换。Input Transform还允许直接在查询本身中访问Kafka的header metadata,Input Transform支持使用Javascript编写,并会被编译成Java bytecode,然后与Flink Jar一起部署。
•User Defined Functions
你可以使用用户自定义函数来丰富你的数据,或在其上应用业务逻辑,从而创建自定义和复杂的 SQL查询。UDF支持使用Javascript或者Java编写。
3.SQL Stream Builder架构
SQL Stream Builder (SSB) 服务集成进了Cloudera Data Platform (CDP) ,并可以连接到Flink服务。SSB 架构包括 Streaming SQL Console、SQL Stream Engine 和 Materialized View Engine。SSB 中的这些主要组件负责执行作业、填充Kafka Topic、创建元数据和查询后台发生的数据。
SSB由以下主要组件组成:
•SQL Stream Engine
•Streaming SQL Console
•Materialized View Engine
当提交一个物化视图查询时,Flink将数据生成到物化视图数据库中,Materialized View Engine会从该数据库中查询所需的数据。
用户与SSB交互的主要组件是Streaming SQL Console,当你使用Streaming SQL Console提交查询时,集群后台会自动创建一个Flink作业。同一个集群中SSB必须依赖Kafka服务,此强制性的Kafka服务用于自动填充websocket输出的topic。采样数据到Console时需要websocket输出,没有添加表时输出SQL查询的结果。
3.1SSB中的数据库管理
SSB在以下情况下使用数据库:
•存储SQL作业的元数据
•存储用于创建物化视图的数据
•作为Flink SQL的connector
Streaming SQL Console将SQL作业的元数据保存在数据库中,Materialized View Engine将持久化数据视图保存在数据库中。Streaming SQL Console支持MySQL/ MariaDB, PostgreSQL和Oracle,而Materialized View Engine只支持PostgreSQL。所以现阶段使用PostgreSQL作为后端数据库比较合适。
在Flink SQL中使用JDBC connector时,你可以从支持的数据库中选择比如MySQL和PostgreSQL, 你必须将数据库的连接信息添加到CREATE TABLE语句中。
参考文档:
https://docs.cloudera.com/csa/1.6.2/ssb-overview/topics/csa-ssb-intro.html