Value类型-groupBy()分组Value类型-groupBy()分组
1、groupBy()算⼦函数签名:
def groupBy(f : T =>K]) : RDD[K, Iterable[T]]
2、算⼦·功能:
1、将原来RDD中的元素按照groupBy中的函数f的执⾏结果进⾏分组
2、结果相同的元素进⼊同⼀个迭代器
3、groupBy算⼦存在shuffle
4、shuffle会落盘,元素会在不同分区中乱窜
3、例⼦1:将偶数、奇数分别分组
1.package com.zhaoxuan.scalatest
2.
3.import org.apache.spark.rdd.RDD
4.import org.apache.spark.{SparkConf, SparkContext}
5.
6./**
7.  * 3、例⼦1:将偶数、奇数分别分组
8.  * */
9.object GroupByTest1 {
10.def main(args: Array[String]):Unit={
11.val conf : SparkConf =new SparkConf().setAppName("groupBy-Test1").setMaster("local[*]")
12.val sc : SparkContext =new SparkContext(conf)
13.val num : RDD[Int]= sc.makeRDD(1 to 10,2)
14.val group : RDD[(Int,Iterable[Int])]= upBy(num => num %2)
15.    llect.foreach(println)
16.}
groupby分组17.}
例⼦2:将字符串⾸字母相同的分⼀组
package com.zhaoxuan.scalatest
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
* 例⼦2:将字符串⾸字母相同的分⼀组
* */
object GroupByTest2 {
def main(args: Array[String]):Unit={
val conf : SparkConf=new SparkConf().setAppName("groupBy-Test2").setMaster("local[*]")
val sc : SparkContext =new SparkContext(conf)
val strRDD : RDD[String]= sc.makeRDD(List("zx","zk","home","spark"))
val group : RDD[(Char,Iterable[String])]= upBy(str => str.charAt(0))
//简写
val group1 : RDD[(Char,Iterable[String])]= upBy(_.charAt(0))
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。