作家
登录

Spark源码分析之分区器的作用

作者: 来源: 2017-04-24 14:03:54 阅读 我要评论

to return only an array of input size
  •       val trimReservoir = new Array[T](i) 
  •       System.arraycopy(reservoir, 0, trimReservoir, 0, i) 
  •       (trimReservoir, i) 
  •  
  •     // 不然开端抽样调换 
  •     } else { 
  •       // If input size > k, continue the sampling process. 
  •       // 大年夜刚才的序号开端,持续遍历 
  •       var l = i.toLong 
  •       // 随机数 
  •       val rand = new XORShiftRandom(seed) 
  •       while (input.hasNext) { 
  •         val item = input.next() 
  •         // 随机一个数与当前的l相乘,如不雅小于采样数k,就调换。(越到后面,调换的概率越小...) 
  •         val WordStrmentIndex = (rand.nextDouble() * l).toLong 
  •         if (WordStrmentIndex < k) { 
  •           reservoir(WordStrmentIndex.toInt) = item 
  •         } 
  •         l += 1 
  •       } 
  •       (reservoir, l) 
  •     } 
  •   } 
  • 肯定界线

    最后就可以经由过程获取的样本数据,肯定界线了。

    1. def determineBounds[K : Ordering : ClassTag]( 
    2.       candidates: ArrayBuffer[(K, Float)], 
    3.       partitions: Int): Array[K] = { 
    4.     val ordering = implicitly[Ordering[K]] 
    5.     // 数据格局为(key,权重) 
    6.     val ordered = candidates.sortBy(_._1) 
    7.     val numCandidates = ordered.size 
    8.     val sumWeights = ordered.map(_._2.toDouble).sum 
    9.     val step = sumWeights / partitions 
    10.     var cumWeight = 0.0 
    11.     var target = step 
    12.     val bounds = ArrayBuffer.empty[K] 
    13.     var i = 0 
    14.     var j = 0 
    15.     var previousBound = Option.empty[K] 
    16.     while ((i < numCandidates) && (j < partitions - 1)) { 

        推荐阅读

        SDN能解决很多问题,但不包括安全

      跟着数字化企业尽力寻求最佳安然解决筹划来保护其赓续扩大的收集,很多企颐魅正在寻求供给互操作性功能的下一代对象。软件定义收集(SDN)具有很多的优势,经由过程将多个设备的┞菲握平面整>>>详细阅读


      本文标题:Spark源码分析之分区器的作用

      地址:http://www.17bianji.com/lsqh/34919.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)