Storm的Stream分组方式

原创 2016年11月24日 10:23:12

Storm7种内置的分组方式,也可以通过实现CustomStreamGrouping接口来定义自己的分组。

(1)Shuffle分组:Task中的数据随机分配,可以保证同一级Bolt上的每个Task处理的Tuple数量一致。

(2)Fields分组:  根据Tuple中的某一个Filed或者多个Filed的值来划分。比如Stream根据user-id的值来分组,具有相同的user-id值的Tuple会被分发到相同的Task中。

(3)All分组:        所有的Tuple都会分发到所有的Task上。

(4)Global分组:  整个Stream会选择一个Task作为分发的目的地,通常是具有最新ID的Task。

(5)None分组:    也就是你不关心如何在Task中做Stream的分发,目前等同于Shuffle分组。

(6)Direct分组:   这是一种特殊的分组方式,也就是产生数据的Spout/Bolt自己明确决定这个Tuple被Bolt的哪些Task所消费。如果Direct分组,需要使用OutputCollector的emitDirect方法来实现。

(7)Local or shuffle分组:如果目标Bolt中的一个或者多个Task和当前产生数据的Task在同一个Worker进程中,那么就走内部的线程间通信,将Tuple直接发给在当前Worker进程中的目的Task。否则,同Shuffle分组。

              

              

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java 8 stream()分组,过滤筛选 List<Object> 根据Object 中的某几个属性作为条件进行分组 去重过滤

List对象 筛选学生年龄 和性别一样的 进行分组,并且挑选出身高最高的 学生Object类:Studentpublic class Student { private String name;...

Storm中Stream分组

Stream

storm 流分组策略(Stream grouping)

配置并行度 works jvm:在一个节点可以运行多个jvm进程,一个topology可以包含一个或者多个worker并行的泡在不同的machine,所以一个work progress就是执行一...

Java8 新方法之 Stream(一)

Java8中的steram仅仅代表着数据流,与InputStream,OutPutStream是完全不同的概念。这里的stream 是对集合(collection)功能的增强,更专注于对集合对象的各种...

Java 8 stream 分组 合并

java 8 stream 分组 合并

Java8 Stream流操作在用户系统中的妙用

本文主要介绍了Java8 新api Stream的使用案例。实现排序,去重,对比,筛选,分组,收集,聚集等等功能。主要包含sort()函数,distinct()函数,map()函数,collect()...

并发和并行的区别,进程和线程的区别,如何创建线程和线程的四种状态,什么是线程计时器

多线程并发就像是内功,框架都像是外功,内功不足,外功也难得精要. 1.进程和线程的区别 一个程序至少有一个进程,一个进程至少有一个线程. 用工厂来比喻就是,一个工厂可以生产不同种类的...
  • lwj0310
  • lwj0310
  • 2014年04月25日 11:41
  • 686

Storm实战常见问题及解决方案

文档说明 该文档包涵了storm实战中经常遇到一些问题,及对应解决方案。这个文档是群里一个朋友在学习storm,并实战storm中遇到的一些问题,及和群里其他朋友一起交流给出的对应解决方案,并由他整...

8.storm中不同的流分组方式

package backtype.storm.topology; import backtype.storm.generated.GlobalStreamId; import backt...

Laravel migration PHP Storm遇到的问题:failed to open stream: Operation now in progress

关于在使用PHP Storm和Laravel时遇到的问题:failed to open stream: Operation now in progress...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Storm的Stream分组方式
举报原因:
原因补充:

(最多只允许输入30个字)