spark 求相鄰的元素有多少個?
阿新 • • 發佈:2018-11-11
資料:
A;B;C;D;B;D;C B;D;A;E;D;C A;B |
如上面的資料,A,B有兩個 C,D有一個 D,C有兩個
/* A;B;C;D;B;D;C B;D;A;E;D;C A;B */ object Demo2 { def main(args: Array[String]): Unit = { val session = SparkSession.builder().appName("Demo2").master("local[*]").getOrCreate() val file = session.read.textFile("D:\\資料\\case.txt").rdd val word1: RDD[String] = file.flatMap(_.split(";")) val words: RDD[Array[String]] = file.map(line=>{ line.split(";") }) // println(words.collect().toBuffer)//此時輸出的只是地址,要使用flatMap將裡面存在的資料壓平操作 //ArrayBuffer([Ljava.lang.String;@5072e638, [Ljava.lang.String;@3129299f, [Ljava.lang.String;@2f73f0c7) val flatWord: RDD[(String, Int)] =words.flatMap(x=>{ val size=x.length for (i<- 0 until size-1) yield (x(i)+","+x(i+1) -> 1) }) val redce = flatWord.reduceByKey(_+_) redce.foreach(println) //或者是直接使用 val a= file.map(_.split(";")).flatMap(x=>{ for(i<-0 until x.length-1) yield (x(i)+","+x(i+1) -> 1) }).reduceByKey(_+_).foreach(println) session.stop() } }