2017-10-26 8 views
0

私はlabeled pointのスパークを持っています。私はラベルのすべての明確な値を数えたいと思う。私は何かPysparkはラベル付けされたポイントRDDのラベルの異なる値をカウントします

from pyspark.mllib.regression import LabeledPoint 

train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ]) 

train_data.reduceByKey(lambda x : x.label).collect() 

を試してみてくださいしかし、私はスパーク2.1とPython 2.7を使用し

TypeError: 'LabeledPoint' object is not iterable

を取得します。助けてくれてありがとう。

+0

は、あなたのデータ – desertnaut

+0

のサンプルを提供してください。 –

答えて

2
あなたは自分の LabeledPointキーと値のRDDに変換する必要があり、その後、キーによってカウント

:私はいくつかのデータとの私の質問を更新してい@desertnaut

spark.version 
# u'2.1.1' 

from pyspark.mllib.regression import LabeledPoint 

train_data = sc.parallelize([ LabeledPoint(1.0, [1.0, 0.0, 3.0]),LabeledPoint(2.0, [1.0, 0.0, 3.0]),LabeledPoint(1.0, [1.0, 0.0, 3.0]) ]) 

dd = train_data.map(lambda x: (x.label, x.features)).countByKey() 
dd 
# {1.0: 2, 2.0: 1}  
+0

これはOPのpbを解決します。しかし、説明があるといいですね:) – eliasah

+1

ここに行くhttps://stackoverflow.com/questions/24804619/how-does-spark-aggregate-function-aggregatebykey-workとhttps://databricks.gitbooks.io /databricks-spark-knowledge-base/content/best_practices/prefer_reducebykey_over_groupbykey.htmlあなたは余分な読書としてそれらのリンクを追加することができます:) – eliasah

+0

@eliasahあまりにも多くのタスク、あまりにも時間... :( – desertnaut

関連する問題