2017-10-14 9 views
0

以下は私のデータフレームとコードで何の属性マップを持っていない私は一時=行を実行していたとき、私はエラーの下に取得する以下 Pyspark MLエラーオブジェクトが

df=  
a b c d  
1 3 10 110  
2 5 12 112  
3 6 17 112  
4 8 110 442 

は私のコード

spark =SparkSession.builder.appName('dev_member_validate_spark').config('spark.sql.crossJoin.enabled','true').getOrCreate() 
sqlCtx=SQLContext(spark) 
from pyspark.ml.linalg import DenseVector 
from pyspark.mllib.regression import LabeledPoint 
temp = df.select("a","b").map(lambda line:LabeledPoint(line[0],[line[1:]])) 

ある

Error:Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/cloudera/parcels/SPARK2-2.1.0.cloudera1- 
    1.cdh5.7.0.p0.120904/lib/spark2/python/pyspark/sql/dataframe.py", line 964, in __getattr__ 
    "'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) 
AttributeError: 'DataFrame' object has no attribute 'map' 

Clouderaでpyspark 2.1を使用しています。5.10

私は、リンクを参照して、上記のスクリプトをしています:

https://databricks.com/product/getting-started-guide/machine-learning

この問題を解決するために私を助けてください。

答えて

1

をdf.rddことができます。 別々のMLのライブラリがあります。 (あなたが線形代数ライブラリをインポートした元の)最初の、 pyspark.mlです。 2番目はです.pyspark.mllibLabelPointをインポートしました。

これらの2つのパッケージを相互運用しようとすると、痛みを伴う道路になります。それに固執しようとしてください。

第二には、例外のようあなたが持っている: temp = df.select("a","b").map(...) dfmapメソッドを持っていないDataFrame、です。

しかし、私の最初のアドバイスをしてください - mllibミリリットルモジュールを混在させないでください。

+0

ありがとうエリオール。本当に私はあなたのアドバイスを取る私のキャリアに必ず来るためにこれらのコメントが必要です。ここで私は、パッケージをインポートすることを理解していなかった理由であった機能を達成しようとしていた – user3292373

+0

いつでもうれしいです。 1つは_my​​sib_より_pyspark.ml_ライブラリが好きです。 機能が不足している場合は、お知らせください。 –

2

これは、Dataframeには単に「マップ」属性がないためです。 Spark 2.0以前は、それはあったが、もうそれはなかった。 Databricksはチュートリアルを更新しませんでした。あなたはRDDに変換することでマップは、すなわちが最初に気づくください

+0

ありがとうLukasz。データを把握できました。私はいつもデータフレームを扱っていました。これらのdenseVectorに対処することは非常に困難でした。今一歩一歩進んで – user3292373

関連する問題