我想写一个函数
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中引用它。任何帮助将不胜感激。