2016-12-20 7 views
0

とアイテムセットを削除します。スパーク1.6 - 私は、次のコードてきた唯一の1項目

val df = sqlContext.sql("SELECT Transaction_ID,Product_ID FROM Transactions as tmp") 
val rawDict = df.select('Product_ID).distinct().sort('Product_ID) 
val dictCounts = rawDict.groupBy('Product_ID).count().filter(col("count") >= 2) 
val sigCounts = dictCounts.filter('count === 1) 
val dupCounts = dictCounts.filter('count > 1) 
val sigDescs = rawDict.join(sigCounts, "Product_ID").drop('count) 
val invoiceToStockCode = df.select('Transaction_ID, 'Product_ID).distinct() 
val baskets = invoiceToStockCode.groupBy('Transaction_ID).agg(collect_list('Product_ID).as('StockCodes)).cache() 

そして、私はいくつかの相関ルールを抽出しようとしているが。そのためには、すべてのトランザクションが複数の製品によって保証されていることを保証する必要があります。しかし、私のコードでは、1つの製品だけでトランザクションを取得しています。

どうすればフィルタリングできますか?

ありがとうございます!

答えて

0

私は私はあなたの条件を持っていない、100%確信しているが、私はこれは動作するはずだと思う:

val rawDict = df.select('Product_ID).sort('Product_ID) 
val dictCounts = rawDict.groupBy('Product_ID).count() 
val valid = dictCounts.filter('count > 1).drop('count) // only consider counts > 1 
val singleRemoved=df.join(valid,Seq("Product_ID")).distinct() 
val groupedTransactions = singleRemoved.groupBy("Transaction_ID").agg(collect_list("Product_ID")) 
関連する問題