shuffle grouping: 隨機分組, 隨機派發stream裡面的tuple, 保證bolt中的每個任務接收到的tuple數目相同.(它能實現較好的負載均衡)
fields grouping:按欄位分組, 比如按userid來分組, 具有同樣userid的tuple會被分到同一任務, 而不同的userid則會被分配到不同的任務
all grouping: 廣播傳送,對於每乙個tuple,bolts中的所有任務都會收到.
global grouping: 全域性分組,這個tuple被分配到storm中的乙個bolt的其中乙個task.再具體一點就是分配給id值最低的那個task.
non grouping: 隨機分派,意思是說stream不關心到底誰會收到它的tuple.目前他和shuffle grouping是一樣的效果,
direct grouping: 直接分組,這是一種比較特別的分組方法,用這種分組意味著訊息的傳送者具體由訊息接收者的哪個task處理這個訊息.只有被宣告為direct stream的訊息流可以宣告這種分組方法.而且這種訊息tuple必須使用emitdirect方法來發射.訊息處理者可以通過topologycontext來或者處理它的訊息的taskid (outputcollector.emit方法也會返回taskid)
fields grouping 的**
1shufflegrouping**/**2
* 數字累加求和
3* 先新增storm依賴4*/
5public
class
localtopologysumfieldsgrouping
3031
int num = 1;
32/**
33* 這個方法是spout中最重要的方法,
34* 這個方法會被storm框架迴圈呼叫,可以理解為這個方法是在乙個while迴圈之內
35* 每呼叫一次,會向外發射一條資料
36*/
37@override
38public
void
nexttuple()
4445
/**46
* 宣告輸出字段
47*/
48@override
49public
void
declareoutputfields(outputfieldsdeclarer declarer) 54}
5556
/**57
* 自定義bolt需要實現baserichbolt
58*
@author
administrator59*
60*/
61public
static
class mybolt extends
baserichbolt
7677
int sum = 0;
78/**
79* 是bolt中最重要的方法,當spout發射乙個tuple出來,execute也會被呼叫,需要對spout發射出來的tuple進行處理
80*/
81@override
82public
void
execute(tuple input)
8990
/**91
* 宣告輸出字段
92*/
93@override
94public
void
declareoutputfields(outputfieldsdeclarer declarer)
9899
}100
/**101
* 注意:在組裝topology的時候,元件的id在定義的時候,名稱不能以__開頭。__是系統保留的
102*
@param
args
103*/
104public
static
void
main(string args)
115116 }
1/**2
* 數字累加求和
3* 先新增storm依賴4*/
5public
class
localtopologysumshuffergrouping
3031
int num = 1;
32/**
33* 這個方法是spout中最重要的方法,
34* 這個方法會被storm框架迴圈呼叫,可以理解為這個方法是在乙個while迴圈之內
35* 每呼叫一次,會向外發射一條資料
36*/
37@override
38public
void
nexttuple()
4445
/**46
* 宣告輸出字段
47*/
48@override
49public
void
declareoutputfields(outputfieldsdeclarer declarer)
5455}56
5758
/**59
* 自定義bolt需要實現baserichbolt
60*
@author
administrator61*
62*/
63public
static
class mybolt extends
baserichbolt
7879
int sum = 0;
80/**
81* 是bolt中最重要的方法,當spout發射乙個tuple出來,execute也會被呼叫,需要對spout發射出來的tuple進行處理
82*/
83@override
84public
void
execute(tuple input)
9192
/**93
* 宣告輸出字段
94*/
95@override
96public
void
declareoutputfields(outputfieldsdeclarer declarer)
100101
}102
/**103
* 注意:在組裝topology的時候,元件的id在定義的時候,名稱不能以__開頭。__是系統保留的
104*
@param
args
105*/
106public
static
void
main(string args)
117 }
Storm累計求和中使用各種分組Grouping
shuffle grouping 隨機分組,隨機派發stream裡面的tuple,保證bolt中的每個任務接收到的tuple數目相同.它能實現較好的負載均衡 fields grouping 按欄位分組,比如按userid來分組,具有同樣userid的tuple會被分到同一任務,而不同的userid則...
在storm中使用定時儲存
在storm中使用實時儲存會對效能帶來很大的考驗,所以在很多場景中還是使用定時儲存 而且storm自帶了定時功能,使用方式如下 首先在topo中的config中定義乙個通訊時間,定義方式如下 conf.put config.topology tick tuple freq secs,60 設定這個屬...
Oracle12C 5 分析函式之累計求和
oracle 中使用sum over 來進行累計求和,下面給出幾個例子。按照 id 逐行累計求和 按照id排序,逐行加point select stucode,stuname,sum point over order by id from stu gra分組,按照 id 逐行累計求和 以stucod...