flink的java-euclidean距离计算

pdkcd3nj  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(346)

ApacheFlink有计算欧几里德距离的设置库。我想使用相同的api来计算n维空间的距离。我有两个数据集和3个功能。
a={0.1,0.3,0.8}b={0.2,0.4,0.7}
如何使用apache flink计算这两个向量之间的距离。

iugsix8n

iugsix8n1#

这应该能奏效

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 计算距离。

相关问题