如何从Spark中的多个值计算平均值

时间:2015-09-16 14:04:36

标签: apache-spark spark-streaming

我有一个映射器,它发出键/值对(复合键和复合值以逗号分隔)。

e.g

键: a,b,c,d 值: 1,2,3,4,5

键: a1,b1,c1,d1 值: 5,4,3,2,1

...

...

键: a,b,c,d 值: 5,4,3,2,1

我可以使用reduceByKey轻松地对这些值进行求和。

e.g

reduceByKey(new Function2<String, String, String>() {

        @Override
        public String call(String value1, String value2) {
            String oldValue[] = value1.toString().split(",");
            String newValue[] = value2.toString().split(",");

            int iFirst = Integer.parseInt(oldValue[0]) + Integer.parseInt(newValue[0]);
            int iSecond = Integer.parseInt(oldValue[1]) + Integer.parseInt(newValue[1]);
            int iThird = Integer.parseInt(oldValue[2]) + Integer.parseInt(newValue[2]);
            int iFourth = Integer.parseInt(oldValue[3]) + Integer.parseInt(newValue[3]);
            int iFifth = Integer.parseInt(oldValue[4]) + Integer.parseInt(newValue[4]);

            return iFirst  + "," + iSecond + ","
                    + iThird+ "," + iFourth+ "," + iFifth;

        }
    });

但问题是如何找到其中一个值的平均值。让我们假设我想要SUM IFirst,iSecond,iThird和iFourth,但我想找到iFifth的平均值。我该怎么做?使用简单的键/值对,我可以使用mapValues函数,但不知道如何使用我的示例来完成它。请指教。

0 个答案:

没有答案