標籤:cas 分享 import host split cal res 溢出 result
自己前面的小練習一直都是在linux上面寫的,可是最近由於要把他遷移到win上面,我在自己的csdn部落格有對如何在win上面搭建spark環境做出說明,好了,我們還是先看看
今天的內容吧
1.假如你有一個檔案,如果你想實現以前的mapReduce的操作,這個時候,如果我們使用spark則會變的非常的簡單,如果你此時的檔案是以"\t"進行分割的,那我就可以這
def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("UrlCount").setMaster("local") val sc = new SparkContext(conf) //rdd1將資料進行切分,元祖中放的是(URL,1) val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{ val f = line.split("\t") (f(1),1) }) val rdd2 = rdd1.reduceByKey(_+_) }則此時的rdd2,就已經完成了wordCount的操作了
第一個練習(對一個數組進行迴圈處理)
package cn.wj.test.spark.day03import org.apache.spark.{SparkConf, SparkContext}/** * Created by WJ on 2016/12/30. */object ForeachDemo2 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("ForeachDemo2").setMaster("local[3]") val sc = new SparkContext(conf) val rdd1 = sc.parallelize(List(1,2,3,4,5,6,7,8,9)) rdd1.foreach(println(_)) sc.stop() }}
2.第二個練習
package cn.wj.spark.day02import java.net.URLimport org.apache.spark.{SparkConf, SparkContext}/** * Created by WJ on 2016/12/30. */// 這個是以java來進行排序,如果記憶體過大,可能會出現溢出的操作object UrlCount { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("UrlCount").setMaster("local") val sc = new SparkContext(conf) //rdd1將資料進行切分,元祖中放的是(URL,1) val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{ val f = line.split("\t") (f(1),1) }) val rdd2 = rdd1.reduceByKey(_+_) val rdd3 = rdd2.map(t=>{ val url = t._1 val host = new URL(url).getHost() (host,url,t._2) })// println(rdd2.collect.toBuffer) //這個的操作是,將rdd4的3以host的進行分組,軟後並在每一個分組的情況下,以value中的第三個資料進行排序 //,並且只取前三個的排序 val rdd4 = rdd3.groupBy(_._1).mapValues(it =>{ it.toList.sortBy(_._3).reverse.take(3) }) println(rdd4.collect().toBuffer) }}
第三個練習
package cn.wj.test.spark.day03import org.apache.spark.{SparkConf, SparkContext}import java.net.URL/** * Created by WJ on 2016/12/31. */object AddUrlCount3 { val arr = Array("java.itcast.cn","php.itcast.cn","net.itcast.cn") def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("AppUrlCount3").setMaster("local") val sc = new SparkContext(conf)// val rdd1 = sc.textFile("E://Test/itcast.log").map(line =>{// val f = line.split("\t")// (f(1),1)// }) val rdd1 = sc.textFile("E://Test/itcast.log").map( line =>{ val f = line.split("\t") (f(1),1) }) val rdd2 = rdd1.reduceByKey(_+_) val rdd3 = rdd2.map(t=>{ val url = t._1 val host = new URL(url).getHost() (host,url,t._2) }) for(ins <- arr){ val rdd = rdd3.filter(_._1==ins) val result = rdd.sortBy(_._3,false).take(3) println(result.toBuffer) } sc.stop() }}
spark基於win上面的操作