Java 基于apachespark的RDD数据迭代
我有一个数据,如下所示,由纬度和经度值组成Java 基于apachespark的RDD数据迭代,java,apache-spark,iteration,rdd,Java,Apache Spark,Iteration,Rdd,我有一个数据,如下所示,由纬度和经度值组成 45.25,23.45 22.15,19.35 33.24,12.45 15.67,21.22 我需要根据两点之间的欧几里德距离构造一个矩阵 由于有4个点,我们将得到和4x4矩阵 p1p1 p1p2 p1p3 p1p4 p2p1 p2p2 ........ .................. ..........p4p3 p4p4 现在的问题是,我们如何在ApacheSparkJava中执行迭代(如下面用java实现的代码所示) int nro
45.25,23.45
22.15,19.35
33.24,12.45
15.67,21.22
我需要根据两点之间的欧几里德距离构造一个矩阵
由于有4个点,我们将得到和4x4矩阵
p1p1 p1p2 p1p3 p1p4
p2p1 p2p2 ........
..................
..........p4p3 p4p4
现在的问题是,我们如何在ApacheSparkJava中执行迭代(如下面用java实现的代码所示)
int nrows=latit.size();
int ncols=longit.size();
double[]]w=新的double[nrows][ncols];
对于Spark中的(inti=0;i,您可以将其转换为一组转换和操作。
给定包含位置数据的点rdd
,则可以获得欧几里得距离,如下所示:
points.cartesian(points).map{case ((x1, y1),(x2,y2)) => math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))}
上面的代码输出是(x,y)还是x?如果我想以单个值而不是成对值的形式返回RDD,那么transformation@swagath001给定RDD[(双精度,双精度)]
和f:(双精度,双精度)=>Double
RDD。map(f)
将为RDD[Double]类型
我认为它与java API无关?能否请您发布与spark java相关的逻辑api@swagath001Java版本在功能上是等效的,但在语法方面要详细得多。用Java编写这篇文章是留给读者的练习。这是一个起点:
points.cartesian(points).map{case ((x1, y1),(x2,y2)) => math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))}