您的位置:首页 > 其它

Storm 从入门到精通 第十讲 Stream Grouping - Fields Grouping

2018-04-03 09:46 435 查看
Fields Grouping按字段分组:比如按 UserId来分组,具有同样UserId来分组的Tuple会被发送到到相同的Bolts,而不同的UserId则会被分配到不同的Bolts。



应用场景:用于数据分组统计,非常类似于 SQL Group By 关键字, 主要用于分组求和、统计、Avg、Min、Max等等。

例如: 求一个学生的总分(Storm 实现)?
Student:  ID Name  Course Score   -> SQL   select ID, name, sum(score) from Student group by id, name
001 小胡 语文 90
002 小王 语文 95
001 小胡 英语 88
002 小王 英语 90
001 小胡 数学  90
002 小王 数学  95
.....
.....
.....



求和伪编码:
Map containsKey(ID+Name) not found
Map.put(ID+Name, Score)
If Found then
Get scoreSum = Map.get(ID+ Name)

Map.put(ID+Name, Score+scoreSum)

PrintWriterToplogyOnFieldGroupConfig用例说明:





Spout 随机发送编程语言集合如下:



运行结果:
WriterBolt平行度为4, 4个文件输出,每个文件包含的编程语言绝对无重复,同时编程语言合集无遗漏。



com.john.learn.storm.ch01.bolt.WriterBolt@23cd092c:Go、Python、Php、Clojure、VB



com.john.learn.storm.ch01.bolt.WriterBolt@40c8046a:C





com.john.learn.storm.ch01.bolt.WriterBolt@72daf38:Java、Scala、Groovy




com.john.learn.storm.ch01.bolt.WriterBolt@165161ce: Javascript
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Storm