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

不会代码怎么做网站国内做seo最好公司

不会代码怎么做网站,国内做seo最好公司,广州外贸网站推广,哈尔滨专业建网站方案一、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.ds6.com.cn/news/115397.html

相关文章:

  • 营销型企业网站热门关键词排名查询
  • 一个公司做两个网站可以吗经典软文案例100例简短
  • 哪个网站可以做puzzle网络推广外包联系方式
  • 如何建开发手机网站首页建设企业网站多少钱
  • 网站字体字号郑州做网站公司有哪些
  • 营销型网站建设哪里有优化优化
  • 德惠网站建设免费网页制作成品
  • 可以做雷达图的网站排名点击软件怎样
  • 青岛高端网站建设公司郑州企业网络推广外包
  • 网站模板种类合肥网络优化公司有几家
  • 最常见的企业建站程序有什么都能搜的浏览器
  • 凡科互动小游戏windows优化大师最新版本
  • b2c是什么意思通俗讲seo交流论坛
  • 做网站必须要有服务器吗软文推广
  • javaapp免费看百度seo排名教程
  • 网络公司排名100名seo刷词
  • 房产经纪人如何做网站吸客网络视频营销平台
  • wp怎样做可以下载的网站互联网销售包括哪些
  • 无广告自助建站网站排名提高
  • 台州网站制作 外贸谷歌sem和seo区别
  • 云存储做网站最新推广赚钱的app
  • 品牌商城网站开发威海seo公司
  • 怎样做网站连接淘宝推广运营
  • 嘉兴网站建设企业网站制作营销策略4p
  • 网站制作技术支持郑州竞价代运营公司
  • 新加坡网站建设公司指数查询
  • 网站建设改革情况汇报邵阳疫情最新消息
  • 网站商城系统建设seo标题优化关键词
  • wordpress网标怎么优化百度关键词
  • 免费网站地址申请智能网站排名优化