我排在BigData DB(卡桑德拉在我的情況),列名COL1,COL2,COL3,VAL1,VAL2動態透視使用暴風
在SQL方法,我可以通過COL1,COL2或COL2,COL1做組或者任何其他可能的方式。這樣我可以很容易地形成樹形結構。
但是現在我們使用Cassandra來存儲不支持group的數據。所以我們想用Storm來做羣組和聚合。 我們寫了一些示例代碼做聚合和分組,但我們無法形成一個意見,我們是否可以實現它。
數據看起來像這樣
col1,col2,col3,val1,val2
------------------------
a1,b1,c1,10,20
a1,b1,c2,11,13
a1,b2,c1,9,15
a1,b2,c3,13,88
a2,b1,c1,30,44
a2,b3,c2,22,33
a4,b4,c4,99,66
像Excel數據透視我想建立層次結構根 - > child1-> child2-> child3-VAL1,VAL2那麼它可能看起來是這樣,如果我的層次是col1- > col2-> COL3
a1 {43,136}
--b1 {21,33}
--c1 10,20
--c2 11,13
--b2 {22,103}
--c1 9,15
--c3 13,88
a2 {52,77}
--b1 {30,44}
--c1 30,44
--b3 {22,33}
--c2 22,33
a4 {99,66}
--b4 {99,66}
--c4 99,66
我想給用戶的功能重新安排層次的元素像col3-> col1-> COL2(或別的東西也是,這是動態的) 在這種情況下,數據看起來像這樣
c1 {49,79}
--a1 {19,35}
--b1 10,20
--b2 9,15
--a2 {30,44}
--b1 30,44
c2 {11,13}
--a1 {11,13}
--b1 11,13
--a2 {22,33}
--b3 22,33
c3 {13,88}
--a1 {13,88}
--b2 13,88
c4 {99,66}
--a4 {99,66}
--b4 99,66
我的三叉戟代碼的幾行看起來像這樣,這是行不通的。
topology.newStream("aggregation", spout)
.groupBy(new Fields("col1","col2","col3","val1","val2"))
.aggregate(new Fields("val1","val2"), new Sum(), new Fields("val1sum","val2sum"))
.each(new Fields("col1","col2","col3","val1sum","val2sum"), new Utils.PrintFilter());
爲了進行上述轉換,我希望使用帶或不帶Trident API支持的Storm。 任何人都可以指導我如何實現它?任何程序的想法都非常感謝。