import org.apache.spark.{HashPartitioner, Partitioner, SparkConf, SparkContext}
/**
* Created by Administrator on 2018/7/3.
*/
object test {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("test").setMaster("local[12]")
val sc = new SparkContext(conf)
val book=Array(("大冰","阿弥陀佛么么哒"),("大冰","我不"),("柴静","看见"),("知乎","知乎"),
("胡赛尼","追风筝的人"),("大冰","你坏"),("钱钟书","围城"),("钱钟书","猫"),("大冰","好吗好的"))
sc.makeRDD(book).combineByKey(
v => (1,v),
(acc:(Int,String),v:String) => (acc._1 + 1,v),
(acc:(Int,String),acc1:(Int,String)) => (acc._1+acc1._1 , acc1._2),
new HashPartitioner(1),
false
).map {
case (k, (k1, v)) => Array(k, k1, v).mkString("\t")
}.foreach(println)
sc.stop()
}
}
理解:https://blog.youkuaiyun.com/Gpwner/article/details/73349589

本文通过一个具体的示例,深入解析了Apache Spark中结合操作combineByKey的使用方法,展示了如何使用此函数对分布式数据进行聚合处理。文章首先创建了一个SparkConf配置,并初始化了SparkContext上下文。随后,定义了一个书籍作者及其作品的数组,将其转换为Spark RDD。利用combineByKey函数,实现了对每本书的作者及其数量的统计,最后将结果打印出来。整个过程涉及到了Spark的基本配置、RDD的创建、combineByKey函数的应用及结果输出等关键步骤。
3万+

被折叠的 条评论
为什么被折叠?



