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
.