flink計算實時流中的中位數

2021-10-13 14:15:03 字數 781 閱讀 2708

求1s內的中位數sink -> es

視窗1s,對資料進行分組

計算每組資料的總數

計算視窗內所有資料的總數

根據視窗內所有資料的總數找到中位數的位置

根據中位數的位置找到中位數

senv

// 源資料切割,封裝成stat物件 stat(elapsedtime,num)

.flatmap()

// 按照stat(elapsedtime,num)的elapsedtime進行分組

.keyby()

// 分組視窗(滾動視窗1s)

.window()

// 視窗聚合累加

// stat(elapsedtime,sum)

.aggregate()

// 全視窗(滾動視窗1s)

.windowall()

// 視窗聚合

// 在聚合中進行排序:從小到大進行排序

.process()

// 全視窗

.windowall()

// 在聚合中進行排序:從小到大排序

.process()

// 流啟動

.execute()

計算1s內中位數

1ms視窗計算資料的平均數

1s 中得到1000個平均數

對平均數進行排序

計算平均數的總數

找到中位數的位置

根據中位數的位置找到中位數

頻率分布直方圖

中位數根據頻率分布進行公式計算求得

資料流中的中位數

資料流中的中位數 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。解題思路 維護乙個大堆和乙個小堆,大堆表示序列前一半數,小堆表示序列後一半數,保持兩個堆的元素個...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。class solution double getmedian else private vectordata c...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。簡單題 找中位數 coding utf 8 class solution x def insert self,nu...