Spark基础03 RDD算子02 转换算子案例 distinct groupByKey flatMap sortByKey join mapValues reduce fold

本文介绍了Spark中的几个关键转换算子,包括distinct用于全局去重,groupByKey用于分组,flatMap进行扁平化操作,sortByKey实现排序,join用于数据合并,以及reduce和fold等聚合操作。通过这些算子,可以对RDD数据进行高效处理和转换。
摘要由CSDN通过智能技术生成

RDD
distinct 全局去重 改变分区

/**

  • distinct 去除重复数据

  • 是一个转换算子

  • 全局去重 改变分区
    */
    object DistinctDemo {
    def main(args: Array[String]): Unit = {
    val sc: SparkContext = SparkUtils.getSparkContext
    val seq = Seq(1, 2, 4, 5, 66, 66, 6, 5, 77, 77)
    //转换成RDD
    val rdd: RDD[Int] = sc.parallelize(seq, 2)

    //是一个转换算子
    val rdd2: RDD[Int] = rdd.distinct(3)

    println(rdd.partitions.size)
    println(rdd2.partitions.size)
    val arr: Array[Int] = rdd2.collect()
    println(arr.toBuffer)
    sc.stop()
    }

}

groupBy

/**

  • group by 分组 返回[k,v]的RDD

  • 处理[w] --> [k,iters]

  • 处理[k,v] --> [k, iters]
    */
    object GroupByDemo {
    def main(args: Array[String]): Unit = {

    val sc = SparkUtils.getSparkContext

    val seq: Seq[String] = Seq(“a”, “b”, “c”, “d”, “e”, “f”)
    val rdd1: RDD[String] = sc.parallelize(seq, 2)

    //返回k Iterator
    val rdd2: RDD[(String, Iterable[String])] = rdd1.groupBy(e => e) //元素的内容
    val rdd3: RDD[(String, List[String])] = rdd2.map(e => {
    val k = e._1
    val iters: Iterable[String] = e._2
    (k, iters.toList)
    })
    rdd3.foreach(println)

    sc.stop()

}

}

object Wc1 {
def main(args: Array[String]): Unit = {
val sc = SparkUtils.getSparkContext

val seq: Seq[String] = Seq("a", "b", "c", "d", "e", "f")
val rdd1: RDD[String] = sc.parallelize(seq, 2)

val rdd2: RDD[String] = rdd1.flatMap(_.split("\\s+"))
val rdd3: RDD[(String, Iterable[String])] = rdd2.groupBy(e => e)

val rdd4: RDD[(String, Int)] = rdd3.map(e => {
  (e._1, e._2.size)
})
rdd4.foreach(println)

sc.stop()

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值