当前位置: 首页 > news >正文

温州网页模板建站网站网站开发网上支付

温州网页模板建站,网站网站开发网上支付,郑州市网络公司,中铁雄安建设有限公司网站一、RDD 分区器简介 Spark 分区器的父类是 Partitioner 抽象类分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 后进入哪个分区,进而决定了 Reduce 的个数只有 Key-Value 类型的 RDD 才有分区器,非 Key-Value 类型的 RDD 分区的值是 No…

一、RDD 分区器简介

  • Spark 分区器的父类是 Partitioner 抽象类
  • 分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 后进入哪个分区,进而决定了 Reduce 的个数
  • 只有 Key-Value 类型的 RDD 才有分区器,非 Key-Value 类型的 RDD 分区的值是 None
  • 每个 RDD 的分区索引的范围:0~(numPartitions - 1)

二、HashPartitioner

默认的分区器,对于给定的 key,计算其 hashCode 并除以分区个数取余获得数据所在的分区索引

class HashPartitioner(partitions: Int) extends Partitioner {require(partitions >= 0, s"Number of partitions ($partitions) cannot be negative.")def numPartitions: Int = partitionsdef getPartition(key: Any): Int = key match {case null => 0case _ => Utils.nonNegativeMod(key.hashCode, numPartitions)}override def equals(other: Any): Boolean = other match {case h: HashPartitioner => h.numPartitions == numPartitionscase _ => false}override def hashCode: Int = numPartitions
}

三、RangePartitioner

将一定范围内的数据映射到一个分区中,尽量保证每个分区数据均匀,而且分区间有序

class RangePartitioner[K: Ordering: ClassTag, V](partitions: Int, rdd: RDD[_ <: Product2[K, V]], private var ascending: Boolean = true) extends Partitioner {// We allow partitions = 0, which happens when sorting an empty RDD under the default settings.require(partitions >= 0, s"Number of partitions cannot be negative but found $partitions.")private var ordering = implicitly[Ordering[K]]// An array of upper bounds for the first (partitions - 1) partitionsprivate var rangeBounds: Array[K] = {...}def numPartitions: Int = rangeBounds.length + 1private var binarySearch: ((Array[K], K) => Int) =  CollectionsUtils.makeBinarySearch[K]def getPartition(key: Any): Int = {val k = key.asInstanceOf[K]var partition = 0if (rangeBounds.length <= 128) {// If we have less than 128 partitions naive searchwhile(partition < rangeBounds.length && ordering.gt(k, rangeBounds(partition))) {partition += 1}} else {// Determine which binary search method to use only once.partition = binarySearch(rangeBounds, k)// binarySearch either returns the match location or -[insertion point]-1if (partition < 0) {partition = -partition-1}if (partition > rangeBounds.length) {partition = rangeBounds.length}}if (ascending) {partition} else {rangeBounds.length - partition}}override def equals(other: Any): Boolean = other match {...}override def hashCode(): Int = {...}@throws(classOf[IOException])private def writeObject(out: ObjectOutputStream): Unit =  Utils.tryOrIOException {...}@throws(classOf[IOException])private def readObject(in: ObjectInputStream): Unit = Utils.tryOrIOException {...}
}

四、自定义 Partitioner

/**1.继承 Partitioner 抽象类2.重写 numPartitions: Int 和 getPartition(key: Any): Int 方法
*/
object TestRDDPartitioner {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local[*]").setAppName("partition")val sc = new SparkContext(conf)val rdd = sc.makeRDD(List(("nba", "xxxxxxxxxxx"),("cba", "xxxxxxxxxxx"),("nba", "xxxxxxxxxxx"),("ncaa", "xxxxxxxxxxx"),("cuba", "xxxxxxxxxxx")))val partRdd = rdd.partitionBy(new MyPartitioner)partRdd.saveAsTextFile("output")}
}class MyPartitioner extends Partitioner {// 重写返回分区数量的方法override def numPartitions: Int = 3// 重写根据数据的key返回数据所在的分区索引的方法override def getPartition(key: Any): Int = {key match {case "nba" => 0case "cba" => 1case _ => 2}}}
http://www.yayakq.cn/news/496729/

相关文章:

  • 服装公司网站模版阿里云做电影网站
  • 网站建设公司 石景山wordpress当前文章标题
  • 济南济南网站建设公司网页设计制作网站代码html
  • emlog 转wordpress网络规划与优化技术学什么
  • 芜湖企业网站制作建设领域行政处罚查询网站
  • 软件跟网站开发电子商务商城网站建设
  • 华为服务器seo 新老网站替换 域名不变
  • 新手引导做的差的网站企业号登录wordpress
  • 如何加强校园网站建设竞价推广托管公司价格
  • 余姚网站制作公司中核五公司是国企还是央企
  • 建设购物网站流程图学生网站建设的心得
  • 烟台做网站排名wordpress为什么被墙
  • 邯郸建设局网站资质申报商务酒店设计网站建设
  • 网站建设和利用情况网站怎么做 流程
  • 下列属于网页制作平台的是百度seo排名优化如何
  • 网站推广有用吗?公司简介模板免费文字
  • py可以做网站吗建设网站怎么备案
  • 个人博客网站建设预算网站搭建教程视频
  • 在福州做搬家网站多少钱网站正在建设中页面
  • 长沙企业做网站哪家好深圳平湖网站开发
  • 网银汇款企业做网站用途写什么网站建设 国鸿
  • 网站备案需要准备哪些资料饿了么网站做生鲜吗
  • vps网站如何设置缓存现在推广引流什么平台比较火
  • 广州做网页深圳网站建设seo推广优化
  • 网站手机版怎么做北京南站到故宫最佳路线
  • 住房建设城乡网站网站建设与设计毕业shej
  • 仪器仪表行业网站建设惠州外包网站建设
  • 做网站怎么添加点击事件汕头网站建设方案推广
  • 二级域名网站如何申请wordpress tag=
  • 代做毕业设计网站保定网站建设多少钱