Pyspark Dataframe to Array RDD for KMEANS

时间:2018-02-24 06:00:11

标签: python apache-spark pyspark rdd

我正在尝试在Spark 2.2中运行Kmeans群集算法。我无法找到正确的输入格式。它会出现SomeBoredPseudocode(A) if(A.size()>100) error "oops, I don't need such a big array" i=100; if i==A.size() exit else i=i-1 错误。我进一步检查了我的TypeError: Cannot convert type <class 'pyspark.sql.types.Row'> into Vector是一个Row Rdd。我们将它转​​换为数组RDD吗?这个MLlib Doc表示我们可以将并行数组rdd数据传递给KMeans模型。 inputrdd步骤发生错误。

KMeans.train

import pandas as pd from pyspark.mllib.clustering import KMeans, KMeansModel df = pd.DataFrame({"c1" : [1,2,3,4,5,6], "c2": [2,6,1,2,4,6], "c3" : [21,32,12,65,43,52]}) sdf = sqlContext.createDataFrame(df) inputrdd = sdf.rdd model = KMeans.train( inputrdd, 2, maxIterations=10, initializationMode="random", seed=50, initializationSteps=5, epsilon=1e-4) 当.collect被调用时。

inputrdd

1 个答案:

答案 0 :(得分:0)

以下更改有所帮助。我使用Vectors.dense直接将我的Row rdd更改为Vector。

from pyspark.mllib.linalg import Vectors
inputrdd = sdf.rdd.map(lambda s : Vectors.dense(s))