使用flink计算数据集中值的正确方法是什么

nxagd54h  于 2021-06-21  发布在  Flink
关注(0)|答案(0)|浏览(267)

假设我的数据集已经排序,如下所示:

[
   [100.0, 1],
   [105.0, 1],
   [111.0, 1],
   ... so on
]

中位数等于105.0!所以在java中,我得到了包含数据的dataset对象:

DataSet<Tuple2<Double, Integer>> data = ...

这是计算元组中第一个元素的中位数的正确方法吗

public double getMedian() throws Exception{
    DataSet<Tuple2<Double, Integer>> data = ...

    List<Tuple2<Double, Integer>> dataList = data.collect();

    double median = 0;

    // calculate median
    int itemCount = dataList.size();
    if (itemCount % 2 == 0)
        median = ((double) dataList.get(itemCount/2).f0 + (double) dataList.get(itemCount /2 - 1).f0)/2;
    else
        median = (double) dataList.get(itemCount/2).f0;
    return median;
}

我的意思是,这样在集群上运行代码好吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题