pyspark piplineRDD适合数据帧列

pyspark piplineRDD适合数据帧列,pyspark,spark-dataframe,Pyspark,Spark Dataframe,首先,我是python和spark世界的新手。 我有大学的作业,但我只能呆在一个地方。 我从我的数据进行聚类,现在我在PipelinedRDD中有了我的集群 此后: cluster=featureizedscaleddd.map(lambda r:kmeansmodelmlib.predict(r)) 集群=[2,1,2,0,0,0,1,2] 现在我有了cluster和我的dataframedataDf我需要将我的cluster像一个新的列一样调整到dataDf i Have:

首先,我是python和spark世界的新手。 我有大学的作业,但我只能呆在一个地方。 我从我的数据进行聚类,现在我在PipelinedRDD中有了我的集群

此后:
cluster=featureizedscaleddd.map(lambda r:kmeansmodelmlib.predict(r))
集群=[2,1,2,0,0,0,1,2]

现在我有了
cluster
和我的dataframe
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   |
    +---+---+---+        +---+---+---+-------+

您可以使用
zipWithIndex
join
,添加索引,然后转换回
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"])

您可以使用
。选择(“集群”、“点”。”
以展平输出。

我想在您第一次看到它之后,我可能已经对它进行了编辑。