1. ホーム
  2. python

[解決済み] AttributeError: 'DataFrame' オブジェクトには 'map' という属性がありません。

2022-02-11 01:07:19

質問

以下のコードで、sparkのデータフレームをaddに変換したい。

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")

詳細なエラーメッセージは

---------------------------------------------------------------------------
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'

どなたか、私がここで何を間違えたかご存知の方はいらっしゃいますか?ありがとうございます。

解決方法は?

以下のことができません。 map しかし、データフレームをRDDに変換し、それをマッピングすることができます。 spark_df.rdd.map() . Spark 2.0より前のバージョン。 spark_df.map へのエイリアスです。 spark_df.rdd.map() . Spark 2.0では、明示的に .rdd を最初に指定します。