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に変換する方法はありますか?
ありがとうございます!