Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于apachespark的RDD数据迭代_Java_Apache Spark_Iteration_Rdd - Fatal编程技术网

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))}