pyspark piplineRDD适合Dataframe专栏

时间:2016-12-28 12:41:03

标签: pyspark spark-dataframe

在我成为python和spark世界的新人之前。 我有大学的家庭作业,但我卡在一个地方。 我从我的数据中进行聚类,现在我在PipelinedRDD

中拥有了我的聚类

aftre this: cluster = featurizedScaledRDD.map(lambda r: kmeansModelMllib.predict(r)) cluster = [2,1,2,0,0,0,1,2]

现在我有cluster我的数据框dataDf我需要适合我的cluster,就像新列dataDf

一样
    i Have:               i Need:
    +---+---+---+        +---+---+---+-------+
    | x | y | z |        | x | y | z |cluster|
    +---+---+---+        +---+---+---+-------+
    | 0 | 1 | 1 |        | 0 | 1 | 1 |   2   |
    | 0 | 0 | 1 |        | 0 | 0 | 1 |   1   |
    | 0 | 8 | 0 |        | 0 | 8 | 0 |   2   |
    | 0 | 8 | 0 |        | 0 | 8 | 0 |   0   |
    | 0 | 1 | 0 |        | 0 | 1 | 0 |   0   |
    +---+---+---+        +---+---+---+-------+

1 个答案:

答案 0 :(得分:0)

您可以使用zipWithIndexjoin添加索引,然后转换回df

swp = lambda x: (x[1], x[0])

cluster.zipWithIndex().map(swp).join(dataDf.rdd.zipWithIndex().map(swp)) \ 
  .values().toDF(["cluster", "point"])

在某些情况下,应该可以使用zip

cluster.zip(dataDf.rdd).toDF(["cluster", "point"])

您可以使用.select("cluster", "point.*")跟随展平输出。