个人不完全使用StreamBase的总结

1.StreamBase介绍

StreamBase是IBM公司开发的一款商业流式计算系统,在一些金融行业和政府部门正在被使用。StreamBase是一个商业应用软件,但是提供了develop edition.功能上肯定比企业版要少,但不影响我们使用并且学习它

StreamBase基本没有中文文献,实在是因为他的英文帮助简直是太完备了。而且工具界面非常类似Eclipse,java用户上手非常快

StreamBase官方文档,异常详细,参考价值无穷大。结合工具中提供的例子,非常容易理解

http://docs.streambase.com/sb72/index.jsp?topic=/com.streambase.sb.ide.help/data/html/apiguide/javafunctionwizd.html

2.为什么要使用它

说到流处理,不能不提到批处理

批处理:类似于后台数据库有一堆数据,然后你写个程序,把数据全部处理一边,得到一个结果。

流处理:更多要求的是实时处理,它有个特点就是不断有新的数据进来,比如股票系统,每分钟都有买卖交易进入数据库。比如你想知道这一段时间最高的bid和最低的ask,这就要求有个流处理的引擎。

(注:bid是从买方来说,ask是从卖方来说的)

3.StreamBase强大之处

StreamBase既然是商业软件,必有强大之处
  • 支持分布式
  • 数据共享
  • 数据恢复
  • 容错
一个系统能做到以上几点已经是一个非常屌爆的了

4.StreamBase功能部件

既然是流处理,那就不会每次在处理的时候会把所有数据都考虑进来,流处理定义了一种叫做“窗口”的东西,数据处理的时候,针对的就是窗口内的数据(类似TCP的滑动窗口)。如果你想要处理全部的数据,比如最大,最小,当然它也是支持的,比如外部数据库的访问,临时的内存表。下面娓娓道来一个个部件。

面板上工具分三类(控件都是拖拽方式的)

4.1  Streams

      InputSream,OutPutStream, Error OutputStream, Error InputStream.
      用来控制输入输出,需要用户去定义schema。至于数据来源,支持csv文件,数据库,随机生成等多种方式

4.2  Data Constructs

4种类型。目前我只用过Query Table,用来存储中间数据,表在内存中存在,与Operator 中的Query操作配合使用。Query Table和一般数据库类似,也需要指定schema的。

4.3 Operator and Adapters

  • Query Operator: 一个Query只能连接一个Query table, 但Query Table能被多个Query连接。一个Query相当于对表查询。回忆查询一张表我们需要什么。1.定义查询方式,read,write,delete  2.定义查询条件,where   3. 定义动作,如果查询到数据,你要对数据进行什么操作,比如数据的加减乘除。4.定义异常:如果没有找到数据,你做什么,是插入一条新数据吗? 5.定义输出:你要输出哪些字段。
  • Filter Operator: 过滤器。顾名思义筛选你指定的数据,比如大于某个值的全部输出
  • Aggregate Operator:用来聚合,分三种维度。基于时间,基于字段,基于tuple(tuple就是数据库中的一条record)。然后定义如何聚合,系统提供了很多已有函数,如果average,sum。这个操作中存在windows概念
  • Map Operator: 类似函数的功能,对一个tuple进行函数操作
  • Union Operator:可以接受多个流。它与下面的两个操作有点类似。比如一个大超市很多个结账的口,最后需要把所有的销售情况汇总,这个时候就需要Union,它定了三种合并方式。1.不管输入的schema,统统合并 2.只有schema相同才合并 3.指定schema。它的目的只有一个,把众多类似的流合成一个流。
  • Join Operator: 接受2个流。类似sql的join,但他是基于窗口概念上的Join,也就是部分Join。Join接受两个流输入,步骤1.定义join条件,比如id相等时,我才Join 2.定义Join范围,也就是窗口大小,可以基于值,比如+-60s的时间范围类;也可以基于tuple数量,前后10个tuple做Join
  • Merge Operator:接受2个流。首先定义merge的字段A,在merge过程中,会比较两个流中tuple字段的大小,如果存在一个流中的tuple比另外一个流中的tuple字段A大,那么小的tuple会被输出。同一个流中的tuple是不比较的。可以定义group by,针对同一类的tuple进行merge,比如id相同才比较
  • Sequence Operator:这个简单,给所有的输入流编个号
  • Gather Operator:如果一个tuple,它存在多个属性,针对每个属性分别进行处理,最后需要把所有的处理流汇聚到一起然后输出,这时就需要这个操作了。需要定义采用什么标准进行Gather.
  • 还有其他Operator,由于在使用过程中,并未接触,所以暂不介绍

以上所述少冰山一角,详细介绍请参考文档。如果错误之处,欢迎指出


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值