[Spark进阶]-- spark RDD操作算子详解(应用场景汇总)

一、aggregateByKey应用举例
1、uv统计
输入元祖数据格式:
("201612091515  www.sohu.cn  121.23.24.21","23 2 45 67 dsks")
实现代码:

 val uv_init: RDD[(String, String)] =  ??
 //累加,去重放到set集合
 val uv_calculate: RDD[(String, mutable.HashSet[String])] =uv_init.aggregateByKey(zeroSet,2)((set, elment) => set += elment, (sets, one_set) => sets ++= one_set )
//结果输出
val uv=uv_calculate.map(x => x._1+"\t"+x._2.size)
//   201612091515  www.sohu.cn  121.23.24.21     他的uv数


输出一行一行的数据:
201612091515  www.sohu.cn  121.23.24.21     他的uv数量


二、reduceByKey应用举例
1、单词统计
输入一行一行的文本格式:
wc wr

tt hello

hello wc

实现代码:

 

 

val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line => line.split(" "))
                 .map(word => (word, 1))
                 .reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://...")

 

输出:

单词+数量

 

未完待续……

 

 

 

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页