对.join数据集的Apache Spark操作

时间:2015-02-18 06:12:10

标签: python-2.7 apache-spark k-means

我正在使用集群mllib上的pyspark。在python中,我们只有两个API,一个是预测,它给出了点的簇值,一个是cluster.centers,它给出了集群中心。

我被要求使用公式(群集中的点数)/(群集半径)找到人口最密集的群集^ 2

我找到了找到两个值的方法(群集中的点数, 集群的半径)。现在我有两个(K,V)格式的数据集,其中一个数据集携带(clusterValue,集群的半径)和其他数据集(ClusterValue,集群中的点数)。

我被困在这里如何使用两个数据集计算密度值。我们是否可以使用数据集计算值?

我使用了.join RDD Transformation,通过它我可以获得组合数据集(k,(v,w)),即(clustervalue,(radius,number))。但是无法弄清楚如何应用任何函数在这种类型的数据集上。

之前,如果你们中有人遇到过这个问题,请帮帮我

我正在使用spark 1.1.1

2 个答案:

答案 0 :(得分:1)

您可以使用.map转换为您加入RDD应用任何函数,例如将数字除以半径:

kvw=[("X",(2.0,1.0)),("Y",(3.0,2.0))]
kvwRDD = sc.parallelize(kvw)
kvwRDD.map(lambda (k,(v,w)): (k, w/v))

答案 1 :(得分:0)

http://spark.apache.org/docs/latest/programming-guide.html#basics中介绍了这一点。

densities = joined.map(
    lambda (cluster, (radius, number)): (cluster, number / radius / radius))