91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

生產常用Spark累加器剖析之三(自定義累加器)

發布時間:2020-06-13 10:41:43 來源:網絡 閱讀:477 作者:Stitch_x 欄目:大數據

思路 & 需求

參考IntAccumulatorParam的實現思路(上述文章中有講):

trait AccumulatorParam[T] extends AccumulableParam[T, T] {
  def addAccumulator(t1: T, t2: T): T = {
    // addInPlace有很多具體的實現類
    // 如果想要實現自定義的話,就得實現這個方法
    addInPlace(t1, t2)
  }
}

自定義也可以通過這個方法去實現,從而兼容我們自定義的累加器

需求:這里實現一個簡單的案例,用分布式的方法去實現隨機數

**
  * 自定義的AccumulatorParam
  *
  * Created by lemon on 2018/7/28.
  */
object UniqueKeyAccumulator extends AccumulatorParam[Map[Int, Int]] {
  override def addInPlace(r1: Map[Int, Int], r2: Map[Int, Int]): Map[Int, Int] = {
      // ++用于兩個集合相加
      r1++r2
    }
    override def zero(initialValue: Map[Int, Int]): Map[Int, Int] = {
      var data: Map[Int, Int] = Map()
      data
    }
}
/**
  * 使用自定義的累加器,實現隨機數
  *
  * Created by lemon on 2018/7/28.
  */
object CustomAccumulator {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("CustomAccumulator").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)
    val uniqueKeyAccumulator = sc.accumulable(Map[Int, Int]())(UniqueKeyAccumulator)
    val distData = sc.parallelize(1 to 10)
    val mapCount = distData.map(x => {
      val randomNum = new Random().nextInt(20)
      // 構造一個k-v對
      val map: Map[Int, Int] = Map[Int, Int](randomNum -> randomNum)
      uniqueKeyAccumulator += map
    })
    println(mapCount.count())
    // 獲取到累加器的值 中的key值,并進行打印
    uniqueKeyAccumulator.value.keys.foreach(println)
    sc.stop()
  }
}

運行結果如下圖:## 思路 & 需求

參考IntAccumulatorParam的實現思路(上述文章中有講):

trait AccumulatorParam[T] extends AccumulableParam[T, T] {
  def addAccumulator(t1: T, t2: T): T = {
    // addInPlace有很多具體的實現類
    // 如果想要實現自定義的話,就得實現這個方法
    addInPlace(t1, t2)
  }
}

自定義也可以通過這個方法去實現,從而兼容我們自定義的累加器

需求:這里實現一個簡單的案例,用分布式的方法去實現隨機數

**
  * 自定義的AccumulatorParam
  *
  * Created by lemon on 2018/7/28.
  */
object UniqueKeyAccumulator extends AccumulatorParam[Map[Int, Int]] {
  override def addInPlace(r1: Map[Int, Int], r2: Map[Int, Int]): Map[Int, Int] = {
      // ++用于兩個集合相加
      r1++r2
    }
    override def zero(initialValue: Map[Int, Int]): Map[Int, Int] = {
      var data: Map[Int, Int] = Map()
      data
    }
}
/**
  * 使用自定義的累加器,實現隨機數
  *
  * Created by lemon on 2018/7/28.
  */
object CustomAccumulator {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("CustomAccumulator").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)
    val uniqueKeyAccumulator = sc.accumulable(Map[Int, Int]())(UniqueKeyAccumulator)
    val distData = sc.parallelize(1 to 10)
    val mapCount = distData.map(x => {
      val randomNum = new Random().nextInt(20)
      // 構造一個k-v對
      val map: Map[Int, Int] = Map[Int, Int](randomNum -> randomNum)
      uniqueKeyAccumulator += map
    })
    println(mapCount.count())
    // 獲取到累加器的值 中的key值,并進行打印
    uniqueKeyAccumulator.value.keys.foreach(println)
    sc.stop()
  }
}

運行結果如下圖:
生產常用Spark累加器剖析之三(自定義累加器)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潜山县| 九龙坡区| 南昌县| 永善县| 镇坪县| 宁夏| 铜山县| 兴文县| 喀什市| 阳原县| 勃利县| 博兴县| 台前县| 涿鹿县| 威信县| 翁源县| 常宁市| 辽宁省| 涞源县| 万全县| 花垣县| 沽源县| 丘北县| 苏尼特左旗| 岚皋县| 永川市| 定西市| 海伦市| 桃源县| 宜州市| 铜川市| 额敏县| 舒兰市| 襄垣县| 庆城县| 竹北市| 定日县| 沙雅县| 淮阳县| 峡江县| 格尔木市|