剛開始研究大資料,今天看了個演算法打算寫程式,但有諸多不懂,今天想到一個問題,來此求助,先行謝過~
假定有80種設備,10種故障型別,50000種零件,資料放在資料庫中,用關聯規則(比如FP-growth)進行挖掘,得到一種設備某故障型別用了N多某一種零件,設定N>600則記錄下來。
這個用通常的select count(*) where 的資料庫查詢進行回圈也可以做到,但是80*10*50000次的回圈和比對也能做到。
但是維度增加、數量增加時候,程式時間和對資料庫的IO都是問題。
所以請教下,這種演算法應該怎么做。
1、資料庫的資料要怎么處理?如果要處理到映射檔案里該怎么做?
2、如果用MapReduce方式該怎么實作?
3、如果用Spark該怎么做?(Spark的Mlib似乎有FP-growth等演算法)
這是我學大資料剛入門的很困惑的地方,希望各位“引路人”走過路過能夠指點下,如果可以請說詳細些,謝謝。
uj5u.com熱心網友回復:
https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.htmluj5u.com熱心網友回復:
請教下,我已經搞出來了,一個文本里面放了不到10行的資料跑這個演算法,為什么感徑訓是很慢呢,從運行到出結果也有個七八秒吧,我以為spark應該很快的,用的基本和下面差不多
val data = sc.textFile("data/mllib/sample_fpgrowth.txt")
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)
model.freqItemsets.collect().foreach { itemset =>
println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq)
}
機器配置上一主兩從,master是4G記憶體,兩個worker是2G
在spark配置上都給了1G
不知道為什么還這么慢,找了段java寫的FPG演算法不加入集群跑的比這個快呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67617.html
標籤:Spark
上一篇:win7 + DockerToolbox 為容器設定固定ip
下一篇:流程挖掘和spark結合的地方
