Spark Foreach标准偏差仅适用于首选

时间:2017-11-09 18:52:45

标签: java apache-spark math standard-deviation

下午好,我目前正在使用Java和Apache的Spark,其中包含60,000多行和400多列以下结构的CSV文件:

+---+---+---+---+
| a | 0 | 2 | 4 |
| b | 1 | 4 | 6 |
+---+---+---+---+

基本上,我想计算每行的样本和流行的标准偏差。我使用以下代码,由于某种原因,只有第一行有正确的SD。

joined.javaRDD().foreach(r -> {
    double[] _expressions = new double[407];
    for(int i = 0; i < 407; i++) {
        _expressions[i] = Double.parseDouble(r.get(i + 1).toString());
    }
    double sum = 0.0;
    for (int i = 0; i < _expressions.length; i++) {
        sum += _expressions[i];
    }
    double avg = sum / _expressions.length;
    double sum2 = 0.0;
    for (int i = 0; i < _expressions.length; i++) {
        sum2 += (_expressions[i] - avg) * (_expressions[i] - avg);
    }
    double var = sum2 / (_expressions.length - 1);
    System.out.println(Math.sqrt(var));
});

我正在使用带有10行样本的Excel进行比较,我只能看到第一行是正确的。我不认为线程安全是一个问题,但任何帮助将不胜感激。

谢谢。

0 个答案:

没有答案