Inceptor StreamSQL简介
一些流处理平台(比如Spark Streaming,Storm)通常要求用户在创建流处理应用时必须用Java或者Scala进行开发,包括早期的TDH(4.3之前)也是如此。这要求业务人员只有对框架以及流处理本身,甚至是底层技术足够熟悉,才能写出高效的流处理程序。大大地限制了流处理的推广和应用,架高了流处理应用的开发门槛,对于数据科学家和数据分析者而言增加了操作难度,导致无法将精力完全投入在业务分析上。
Inceptor StreamSQL简介 一些流处理平台(比如Spark Streaming,Storm)通常要求用户在创建流处理应用时必须用Java或者Scala进行开发,包括早期的TDH(4.3之前)也是如此。这要求业务人员只有对框架以及流处理本身,甚至是底层技术足够熟悉,才能写出高效的流处理程序。大大地限制了流处理的推广和应用,架高了流处理应用的开发门槛,对于数据科学家和数据分析者而言增加了操作难度,导致无法将精力完全投入在业务分析上。 为降低流应用开发的入门要求,星环从TDH 4.3开始,在Transwarp Stream中引入全新的StreamSQL,允许用户通过SQL实现业务逻辑。StreamSQL几乎可以应对所有类型的业务场景,包括ETL工具,规则报警工具等简单业务场景。为了实现更复杂的业务逻辑,它还对PL/SQL作为高级功能提供了优美的支持。从4.8开始,StreamSQL又新增了基于事件驱动模式的流处理功能,在低延迟处理方面的性能表现更为出色。 关于StreamSQL的几个重要概念 StreamSQL有三个核心概念:Stream、StreamJob 和 Application。概括地说,Stream是数据流,StreamJob是对一个或多个Stream进行计算并将结果写进一张表的任务,Application是一个或多个StreamJob的集合。
StreamSQL的简单示例 快速入门 这里将通过一个简单的例子,对StreamSQL的使用方法做基本介绍。我们会使用Kafka的console工具生成一些简单的数据,并让StreamSQL来处理。该演示包含三部分: 1. 建一个Kafka数据源; 2. 在Inceptor中建一个Stream并触发StreamJob; 3. 在Inceptor中处理Stream从Kafka数据源接收的数据。 建Kafka数据源 1. 登录Kafka节点 登陆集群中任意安装了Kafka的节点。进入/usr/lib/kafka/bin目录,该目录下有建Kafka数据源的所需要的脚本。 2. 建一个Kafka Topic 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-create-topic.sh脚本: 该指令提供了如下信息:topic名称为demo,使用172.16.1.128上的Zookeeper,分3个partition。 3. 查看Kafka Topic 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-topics.sh脚本: 我们可以看到刚才建的名为demo的topic,和它的Partition信息。 4. 建Kafka Producer并发布消息 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-console-producer.sh脚本: 该指令的含义为:指定使用172.16.1.128节点为Kafka Broker,并且指定Producer发布消息的topic为demo。现在,我们可以在命令行中输入一些消息,这些消息都将被发布给demo: 5. 建好数据源 至此,已经建好了一个Kafka数据源,并发布了一些消息。先不要停止上面Producer的进程,让它保持运行,你可以继续在命令行中输入消息。现在打开另一个窗口登陆集群,进入Inceptor,建一个Stream并触发StreamJob的开始。 建Stream及触发StreamJob 1. 登录Inceptor 登陆集群中的任意一个节点,连接到Inceptor。这里,我们以hive用户身份连接一个LDAP认证的Inceptor Server 2。 此处的port由Transwarp Manager配置页上的参数 hive.server2.thrift.port 配置,默认为10010。 2. 建一个Stream 该StreamSQL语句建了一个名为demo_stream的Stream,它使用Kafka为源,接收发布给名为demo的topic的消息,将接收的消息按“,”分隔为两列:id(类型为INT)和letter(类型为STRING)。 3.查看Stream 通过SHOW STREAMS查看刚才创建的Stream。 我们可以看到结果中出现了刚刚建好的demo_stream。 4. 创建并触发一个StreamJob a. 建一张新表demo_table,它需要和demo_stream有相同的schema: b. 向demo_table插入demo_stream中的数据,这个操作会触发StreamJob的执行: 5. 列出正在运行的StreamJob 执行下面指令: 我们可以看到如下输出: 输出结果包含streamid,触发StreamJob的sql和状态。 6. 在Inceptor管理界面查看StreamJob运行状态 打开浏览器,访问http:// |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|