1. 程式人生 > >使用Sparksql計算資料庫表中某一列欄位的中位數

使用Sparksql計算資料庫表中某一列欄位的中位數

該方法是基於Sparksql內建函式進行計算 我先上程式碼: 在這裡插入圖片描述 dataset和columnName最為引數,columnName是欄位名,dataset是什麼不說了,首先通過得到columnName欄位在dataset中的下標位置,再通過withColumn在dataset表最後新增一列"tmpRowNumber",該列是通過row_number().over(Window.orderBy(columnName))得到的(row_number()還可以進行分組排序,分組求topN),是將columnName進行正序排序,然後再通過max和min函式得到該列的最大值和最小值,再通過filter過濾,得到該列中和最大值最小值之和除二相等的結果,該結果所對應的columnName的下標的值就是該欄位的中位數