Storm累計求和中使用各種分組Grouping

2021-09-22 09:50:52 字數 3368 閱讀 8243

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 的**

1

/**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 }

shufflegrouping**

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...