<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      計算相同key的數據平均值 - aggregateByKey

      查看源碼發現 aggregateByKey 的返回值與傳入的zeroVlue類型是一樣的

      package com.pzb.rdd.operator.transform
      
      import org.apache.spark.rdd.RDD
      import org.apache.spark.{SparkConf, SparkContext}
      
      /**
      * @Description TODO aggregateByKey小練習
      * @author 海綿先生
      * @date 2023/3/16-15:17
      */
      object Spark18_RDD_Operator_Transform {
        def main(args: Array[String]): Unit = {
          val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
          val sc = new SparkContext(sparkConf)
      
          // TODO 計算相同key值數據的平均值
      
          val rdd: RDD[(String, Int)] = sc.makeRDD(List(
            ("a", 1), ("a", 2), ("b", 3),
            ("b", 4), ("b", 5), ("a", 6)
          ), 2)
          // (Int,Int):第一個表示相同key的value之和,第二個Int表示相同key出現的次數
          val newRDD: RDD[(String, (Int, Int))] = rdd.aggregateByKey((0, 0))(
            (t, v) => {
              (t._1 + v, t._2 + 1) // t表示的是初始值元組
            },
            (t1, t2) => {
              (t1._1 + t2._1, t1._2 + t2._2)
            }
          )
          // 計算平均值
          val resultRDD: RDD[(String, Int)] = newRDD.map(
            data => (data._1, data._2._1 / data._2._2)
          )
          resultRDD.collect().foreach(println)
          /*
          (b,4)
          (a,3)
           */
          // 模式匹配,如果不這樣寫,就要用"()",并且把value當成一個整體,像上面map一樣
          val resultRDD2: RDD[(String, Int)] = newRDD.mapValues {
            case (total, count) => {
              total / count
            }
          }
          resultRDD2.collect().foreach(println)
          /*
          (b,4)
          (a,3)
           */
      
          sc.stop()
        }
      
      }
      

      另外一種實現方式:

      package com.pzb.rdd.operator.transform
      
      import org.apache.spark.rdd.RDD
      import org.apache.spark.{SparkConf, SparkContext}
      
      /**
      * @Description TODO
      * @author 海綿先生
      * @date 2023/3/16-15:17
      */
      object Spark19_RDD_Operator_Transform {
        def main(args: Array[String]): Unit = {
          val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")
          val sc = new SparkContext(sparkConf)
      
          // TODO transform算子 - combineByKey
      
          val rdd: RDD[(String, Int)] = sc.makeRDD(List(
            ("a", 1), ("a", 2), ("b", 3),
            ("b", 4), ("b", 5), ("a", 6)
          ), 2)
      
          // combineByKey : 方法需要三個參數
          // 第一個參數表示:將相同key的第一個數據進行結構的轉換,實現操作
          // 第二個參數表示:分區內的計算規則
          // 第三個參數表示:分區間的計算規則
          val newRDD: RDD[(String, (Int, Int))] = rdd.combineByKey(
            v => (v, 1), // 指定不同key的第一個value元素格式
            (t: (Int, Int), v) => { // 因為需要動態識別,所以要事先標明數據類型,否則有肯能會出錯
              (t._1 + v, t._2 + 1) // t._1 + v:value的總數
            },
            (t1: (Int, Int), t2: (Int, Int)) => {
              (t1._1 + t2._1, t1._2 + t2._2)
            }
          )
          val resultRDD: RDD[(String, Int)] = newRDD.mapValues {
            case (sum, count) => sum / count
          }
          resultRDD.collect().foreach(println)
          /*
          (b,4)
          (a,3)
           */
          sc.stop()
        }
      }
      
      posted @ 2025-04-10 23:38  MrSponge  Views(20)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品一偷一偷国产| 黄色国产精品一区二区三区| 亚洲粉嫩av一区二区黑人| 人妻少妇精品中文字幕| 乱人伦中文字幕成人网站在线| 精品国产一区二区三区四区| 国产精品国产精品偷麻豆| 国产h视频在线观看| 亚洲国产成人精品福利无码| 免费大片av手机看片高清| 日韩亚洲国产中文永久| 中文字幕理伦午夜福利片| 欧美寡妇xxxx黑人猛交 | 亚洲一区二区精品另类| 17岁日本免费bd完整版观看| 亚洲欧美综合中文| 中文字幕日韩精品有码视频 | 欧美日韩人人模人人爽人人喊| 亚洲色一色噜一噜噜噜| √天堂资源网最新版在线| 任我爽精品视频在线播放| 蜜桃亚洲一区二区三区四| 久久碰国产一区二区三区| 麻豆国产成人AV在线播放| 亚洲欧洲∨国产一区二区三区 | 精品乱人伦一区二区三区| 老熟女熟妇一区二区三区| 日韩免费无码一区二区三区| 永福县| 超碰人人模人人爽人人喊手机版| 日韩有码中文字幕国产| 久久天天躁狠狠躁夜夜av不卡| 久久国产精品色av免费看| 国产影片AV级毛片特别刺激| 在线看国产精品自拍内射| 久久精品午夜视频| 国产一区二区三区国产视频| 国产裸体美女视频全黄| 国产精品久久蜜臀av| 亚洲一区二区三区18禁| 国产V日韩V亚洲欧美久久|