您的位置:首页 > 大数据

imf大数据:第95课:streaming实战,实现在线热搜索词

2016-05-02 16:34 363 查看
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Duration, Seconds, StreamingContext}

object  class_95_OnlineHottestItems{

/**
* 使用Scala开发集群运行的Spark 在线黑名单过滤程序
* @author DT大数据梦工厂
* 新浪微博:http://weibo.com/ilovepains/
* 不是在线处理数据,都是没有价值的
*
*
*/
def main(args: Array[String]){

val conf=new SparkConf().setMaster("local[2]").setAppName("HottestItems")
val ssc=new StreamingContext(conf,Duration(5))

val soDstream=ssc.socketTextStream("master",9999)

soDstream
.map(_.split(" ")(1))//按照空格分割取出第二个元素
.map(item=>(item,1))//元素转化成turple2
.reduceByKeyAndWindow((v1:Int,v2:Int)=>v1+v2,Seconds(60),Seconds(20))//以60s窗口长度,20s滑动间隔进行元素的累加
.transform(ItemRDD=>ItemRDD//DStream没有排序的算子,所以要转化为rdd
.map(pair=>(pair._2,pair._1))//将k,v对调
.sortByKey(false))//对v进行排序
.map(pair=>(pair._2,pair._1))//将K,V复原
.print()
ssc.start()
ssc.awaitTermination()
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: