刚开始研究大数据,今天看了个算法打算写程序,但有诸多不懂,今天想到一个问题,来此求助,先行谢过~假定有80种设备,10种故障类型,50000种零件,数据放在数据库中,用关联规则(比如FP-growth)进行挖掘,得到一种设备某故障类型用了N多某一种零件,设定N>600则记录下来。
这个用通常的select count(*) where 的数据库查询进行循环也可以做到,但是80*10*50000次的循环和比对也能做到。
但是维度增加、数量增加时候,程序时间和对数据库的IO都是问题。所以请教下,这种算法应该怎么做。
1、数据库的数据要怎么处理?如果要处理到映射文件里该怎么做?
2、如果用MapReduce方式该怎么实现?
3、如果用Spark该怎么做?(Spark的Mlib似乎有FP-growth等算法)这是我学大数据刚入门的很困惑的地方,希望各位“引路人”走过路过能够指点下,如果可以请说详细些,谢谢。

解决方案 »

  1.   

    https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.html
      

  2.   


    请教下,我已经搞出来了,一个文本里面放了不到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算法不加入集群跑的比这个快呢