2016-09-13 1 views
-1

私はいくつかの相関ルールを見つけるために、このコードをしました:スパーク1.6 - 相関ルールアルゴリズム - (org.apache.spark.rdd.RDD [アレイ[文字列]])に適用することはできません

import org.apache.spark.mllib.fpm.AssociationRules 
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset 

val data = sc.textFile("FILE"); 

val transactions: RDD[Array[String]] = data.map(s => s.trim.split(',')); 

val ar = new AssociationRules() 
    .setMinConfidence(0.8) 
val results = ar.run(transactions) 

results.collect().foreach { rule => 
    println("[" + rule.antecedent.mkString(",") 
    + "=>" 
    + rule.consequent.mkString(",") + "]," + rule.confidence) 
} 

しかし、私はこのエラーを取得しています:

<console>:50: error: overloaded method value run with alternatives: 
    [Item](freqItemsets: org.apache.spark.api.java.JavaRDD[org.apache.spark.mllib.fpm.FPGrowth.FreqItemset[Item]])org.apache.spark.api.java.JavaRDD[org.apache.spark.mllib.fpm.AssociationRules.Rule[Item]] <and> 
    [Item](freqItemsets: org.apache.spark.rdd.RDD[org.apache.spark.mllib.fpm.FPGrowth.FreqItemset[Item]])(implicit evidence$1: scala.reflect.ClassTag[Item])org.apache.spark.rdd.RDD[org.apache.spark.mllib.fpm.AssociationRules.Rule[Item]] 
cannot be applied to (org.apache.spark.rdd.RDD[Array[String]]) 
     val results = ar.run(transactions) 

どのように関連がニーズをルールタイプにこのRDDを変換することができますか?

多くの感謝!

+0

答えはあなたの問題を解決した場合、あなたは正しい答えとしてそれをマークする必要があります。それは答えを与える人を動機づけ、答えを読んでいる人を助けます。 – Samar

答えて

2

最初FPGrowthModelを作成し、以下のようなfreqItemsetsを渡す必要があります。

import org.apache.spark.mllib.fpm.AssociationRules 
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset 
import org.apache.spark.mllib.fpm.FPGrowth 

val data = sc.textFile("FILE"); 

val transactions: RDD[Array[String]] = data.map(s => s.trim.split(',')); 

val fpg = new FPGrowth() 
    .setMinSupport(0.2) 
    .setNumPartitions(10) 

val model = fpg.run(transactions) // creates the FPGrowthModel 

val ar = new AssociationRules() 
    .setMinConfidence(0.8) 

val results = ar.run(model.freqItemsets) 
関連する問題