使用apache flink进行欧几里德距离计算

时间:2017-09-06 07:20:05

标签: java apache-flink euclidean-distance

Apache flink有设置库来计算欧氏距离。我想在n维空间上使用相同的API进行距离计算。我有两个包含3个功能的数据集。

  

a = {0.1,0.3,0.8}   b = {0.2,0.4,0.7}

如何使用apache flink计算这两个向量之间的距离。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题

final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

final DataSet<double[]> a = env.fromElements(new double[]{0.1, 0.3, 0.8});
final DataSet<double[]> b = env.fromElements(new double[]{0.2, 0.4, 0.7});

a.cross(b).map(new MapFunction<Tuple2<double[],double[]>, Double>() {

    final EuclideanDistance distance = new EuclideanDistance();

    @Override
    public Double map(Tuple2<double[], double[]> value) throws Exception {
        return distance.compute(value.f0, value.f1);
    }
})
.print(); // start execution and output result to STDOUT

我在这里使用org.apache.commons.math3.ml.distance.EuclideanDistance来计算距离。