在RDD中找到一组共线点

时间:2019-05-21 11:33:18

标签: python-3.x apache-spark rdd

我想写一个函数
1)输入RDD
2)与自身进行RdD的笛卡尔积,并返回包含不同元素的RDD
3)从(2)的RDD中找到共线点

我已经完成了前两个步骤,这是简短的第三步-
方法:
i)找到所有对点A =(Ax,Ay)和B =(Bx,By)之间的直线斜率。
ii)对于每个(A,B),找到所有点C =((C1x,C1y),(C2x,C2y),...(Cnx,Cny))其中(A,B)的斜率=(A的斜率,Ci)。
iii)返回(A,B,Ck),其中Ck =满足条件1的C的所有点。
这是我的一些代码-
点1的代码)

def get_cartesian(rdd):
    return rdd.cartesian(rdd).filter(lambda row: row[0]!=row[1]).collect()  

第2点的代码)

def find_slope(x):
    if x[0][0]==x[1][0]:
        slope = "inf"
    else:
        slope= (x[1][1]-x[0][1])/(x[1][0]-x[0][0])
    result= ((x[0],slope),x[1])
    return result     

我无法破解第3点的代码,即在某些时候我知道逻辑,但无法在带有RDD的python中引用它。任何帮助将不胜感激。

0 个答案:

没有答案