java - RDD 数据迭代 Apache Spark

标签 java apache-spark iteration rdd

我有一个如下所示的数据,由纬度和经度值组成

45.25,23.45
22.15,19.35
33.24,12.45
15.67,21.22

我需要根据两点之间的欧几里得距离构造一个矩阵 enter image description here

由于有 4 个点,我们将得到 4x4 矩阵

p1p1 p1p2 p1p3 p1p4
p2p1 p2p2 ........
..................
..........p4p3 p4p4

现在的问题是我们如何在 Apache Spark java 中执行迭代(如下用 java 实现的代码)

int nrows = latit.size();
int ncols = longit.size();
double[][] w = new double[nrows][ncols];
for(int i=0;i<nrows;i++) {
       for(int j=0;j<ncols;j++) {
                temp1 = latit.get(i) - latit.get(j);
                temp2 = longit.get(i) - longit.get(j);
                temp3 = Math.pow(temp1, 2) + Math.pow(temp2, 2);
               w[i][j] = Math.sqrt(temp3);
           }
       }

请建议将数据存储到 RDD 并在 Java API 中执行迭代的合适方法

最佳答案

在 Spark 中,您可以将其转换为一组转换和操作。 给定包含位置数据的pointsRDD,那么您可以获得欧氏距离:

points.cartesian(points).map{case ((x1, y1),(x2,y2)) => math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))}

关于java - RDD 数据迭代 Apache Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529814/

相关文章:

c# - 如何调试 soap web 服务?

java - Java 中的符号

java - 如何读取和写入多个子文件夹?

c# - 如何创建可以迭代的类集合?

java - 从 Maven POM 文件中读取属性文件

java - 尝试填充并返回对象 HashMap 中的列表

python - 如何向 Spark DataFrame 添加新列(使用 PySpark)?

scala - 从 SparkSession 检索 SparkContext

javascript - 循环变量的递增值无法产生 1-6 计数

refactoring - SICP - 具有更多抽象的代码改进