2016-04-29 7 views
-1

Sparkの一部のデータでFPGrowth関数を使用しようとしています。私は何の問題もなく、ここでの例をテストした: https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.htmlpyspark FPGrowthがRDDで動作しない

しかし、私のデータセットは、ハイブ

data = hiveContext.sql('select transactionid, itemid from transactions') 
model = FPGrowth.train(data, minSupport=0.1, numPartitions=100) 

から来ている。これは、メソッドで失敗しまし存在しません:

py4j.protocol.Py4JError: An error occurred while calling o764.trainFPGrowthModel. Trace: 
py4j.Py4JException: Method trainFPGrowthModel([class org.apache.spark.sql.DataFrame, class java.lang.Double, class java.lang.Integer]) does not exist 

をので、私はそれを変換しましたRDDに:

data=data.rdd 

私はいくつかのtrange pickleシリアライザエラー。

net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for pyspark.sql.types._create_row) 

次に、タイプを調べ始めます。この例では、データはフラット・マップで実行されます。これは、RDDとは異なるタイプを返します。

flatmapによって返さRDDタイプ:pyspark.rdd.PipelinedRDD hiveContextによって返さ

RDDタイプ:pyspark.rdd.RDD

FPGrowthだけPipelinedRDDで動作するようです。通常のRDDをPipelinedRDDに変換する方法はありますか?

ありがとうございます!

答えて

0

まあ、私のクエリが間違っていたが、それはcollect_setを使用するように変更してから 私が行うことにより、型エラーを回避するために管理:

data=data.map(lambda row: row[0]) 
関連する問題