如何优化此代码?如何让它快点。减法可以在Spark分布空间中进行吗?这里的Rdd是字典的集合
all_actors =["brad", "tom", "abc", "def"]
init_actors=["tom", "abc"]
for i in all_actors:
dc={}
d1=bj.filter(lambda x: x['actor']==i).first()
for j in init_actors:
d2=centroids.filter(lambda x: x['actor']==j).first()
dc={key: (d1[key] - d2[key])**2 for key in d1.keys() if key not in 'actor'}
val=sum([v for v in dc.values()])
val=math.sqrt(val)
在rdd.take公司(二)
^{pr2}$这个Rdd在每个字典中有大约30000多个键。这只是一个样本。在
预期产量:
求RDD中每行之间的欧几里德距离。在
我知道你需要所有元素之间的所有距离
我认为你们应该做笛卡尔积,然后制作地图来得到所有的距离。在
然后你只需要应用计算距离的map函数(我不确定笛卡尔的布局结果是什么,所以你必须弄清楚calculate泳ucaltesian应该是什么样子)。在
^{pr2}$编辑:我在谷歌上搜索到笛卡尔产生的成对行(x,y)-x和y与所有/init_actors的元素类型相同-所以您可以创建函数:
所有的距离计算操作都是分布式的,所以它应该运行得更快。在
相关问题 更多 >
编程相关推荐