topandas spark examples crear approxquantile python apache-spark pyspark spark-dataframe apache-spark-mllib

python - spark - AttributeError: el objeto ''DataFrame'' no tiene el atributo ''map''



rdd to dataframe pyspark (1)

Quería convertir el marco de datos de chispa para agregar usando el siguiente código:

from pyspark.mllib.clustering import KMeans spark_df = sqlContext.createDataFrame(pandas_df) rdd = spark_df.map(lambda data: Vectors.dense([float(c) for c in data])) model = KMeans.train(rdd, 2, maxIterations=10, runs=30, initializationMode="random")

El mensaje de error detallado es:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-11-a19a1763d3ac> in <module>() 1 from pyspark.mllib.clustering import KMeans 2 spark_df = sqlContext.createDataFrame(pandas_df) ----> 3 rdd = spark_df.map(lambda data: Vectors.dense([float(c) for c in data])) 4 model = KMeans.train(rdd, 2, maxIterations=10, runs=30, initializationMode="random") /home/edamame/spark/spark-2.0.0-bin-hadoop2.6/python/pyspark/sql/dataframe.pyc in __getattr__(self, name) 842 if name not in self.columns: 843 raise AttributeError( --> 844 "''%s'' object has no attribute ''%s''" % (self.__class__.__name__, name)) 845 jc = self._jdf.apply(name) 846 return Column(jc) AttributeError: ''DataFrame'' object has no attribute ''map''

¿Alguien sabe lo que hice mal aquí? ¡Gracias!


No puede map un marco de datos, pero puede convertir el marco de datos en un RDD y spark_df.rdd.map() haciendo spark_df.rdd.map() . Antes de Spark 2.0, spark_df.map alias de spark_df.rdd.map() . Con Spark 2.0, primero debe llamar explícitamente a .rdd .