storm trident一些總結
阿新 • • 發佈:2019-02-02
可以在建立topology的時候設定超時時間
setMessagetimeout預設時間是三十秒
鏈式呼叫 each 用於指定對stream中的每一個tuple進行指定的操作,需要指定tuple那些tuple操作;
對trident的操作要考慮是否跨網路傳輸,是否跨分割槽
filter過濾操作,只是判斷某個tuple是否保留,無需誇網路和分割槽
each 指定傳到操作中只是tuple的 子集(某一部分keyavlue),each操作沒有改變tuple的結構,只是改變了tuple的數量;
Function()經過這個之後,tuple原來的key不會變,會增加一些新的key;
⚠️:tuple本身是不可變的,原來的tuple沒有變,只是產生了一個新的tuple;
public void execute(TridentTuple tuple, TridentCollector collector) {
collector.emit(new Values(orderId, orderTime, orderAmtStr, memberId));
如果前面的被處理的欄位已經解析了,後面的不需要使用,原來的不需要繼續傳遞,可以修剪key - value
可以使用投影操作,project
經過這個操作以後,就會改變tuple結構
persistentAggregate全域性聚合,部分刪除,部分增加,刪除的是除groupy 之外的欄位,增加的是聚合之後的欄位。
partitionAggregate區域性分割槽,加上過濾器鏈,就可以重新轉換為流
如果對於同一個流有不同的操作,可以建立一個區域性流,然後分別對區域性流操作即可。
在分散式環境下,先進行區域性的聚合在全域性聚合,可以降低網路的傳輸。