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

asp源码打开网站有没有网站可以学做床上用品

asp源码打开网站,有没有网站可以学做床上用品,如何开发微信小程序,html5网页设计作业免费在 Spark 的 RDD 中#xff0c;sortBy 是一个排序算子#xff0c;虽然它在某些场景下可能看起来是分区内排序#xff0c;但实际上在需要全局排序时会触发 Shuffle。这里我们分析其底层逻辑#xff0c;结合源码和原理来解释为什么会有 Shuffle 的发生。 1. 为什么 sortBy 会…在 Spark 的 RDD 中sortBy 是一个排序算子虽然它在某些场景下可能看起来是分区内排序但实际上在需要全局排序时会触发 Shuffle。这里我们分析其底层逻辑结合源码和原理来解释为什么会有 Shuffle 的发生。 1. 为什么 sortBy 会触发 Shuffle 关键点 1全局有序性要求 sortBy 并非单纯的分区内排序。它的目标是按照用户指定的键对整个 RDD 的数据进行排序这种操作需要保证全局顺序。为实现这一点必须 对数据进行 重新分区Repartition确保每个分区中的数据按照全局范围内的排序键正确分布每个分区内部再完成排序。 这些步骤不可避免地引入了 Shuffle因为数据需要从一个分区转移到另一个分区以保证全局有序性。 关键点 2底层调用 repartitionAndSortWithinPartitions sortBy 的底层实现会调用 repartitionAndSortWithinPartitions 方法 this.keyBy(f).repartitionAndSortWithinPartitions(new RangePartitioner(numPartitions, this, ascending))(ordInverse).valueskeyBy(f) 将数据转化为 (key, value) 格式key 是排序的关键字value 是原始数据。 RangePartitioner 使用 RangePartitioner 将数据根据排序键重新分区这一步需要 Shuffle。 repartitionAndSortWithinPartitions 先 Shuffle 数据以保证每个分区内的 key 是按范围划分的然后对每个分区内的数据进行排序。 Shuffle 的触发 当目标分区数量与当前分区数量不一致时用户指定分区数或默认分区数会触发 Shuffle即使目标分区数一致只要需要保证全局有序也需要重新分布数据来确保各分区内数据按键范围划分。 2. Shuffle 的作用 全局排序分区间重新分布数据确保所有分区的排序键范围是连续的。负载均衡通过 RangePartitioner 分布数据避免某些分区过大或过小的问题。分区内排序确保每个分区内部数据按键排序。 3. 源码分析 repartitionAndSortWithinPartitions 的核心逻辑如下 def repartitionAndSortWithinPartitions(partitioner: Partitioner)(implicit ord: Ordering[K]): RDD[(K, V)] withScope {val shuffled new ShuffledRDD[K, V, V](this, partitioner)shuffled.setKeyOrdering(ord)new MapPartitionsRDD(shuffled, (context, pid, iter) {val sorter new ExternalSorter[K, V, V](context, Some(partitioner), Some(ord))sorter.insertAll(iter)context.taskMetrics().incMemoryBytesSpilled(sorter.memoryBytesSpilled)context.taskMetrics().incDiskBytesSpilled(sorter.diskBytesSpilled)context.taskMetrics().incPeakExecutionMemory(sorter.peakMemoryUsedBytes)sorter.iterator}) }ShuffledRDD 触发 Shuffle将数据根据分区器重新分布。 ExternalSorter 对每个分区内的数据进行排序如果数据超出内存会使用磁盘作为临时存储。 4. 举例说明 Shuffle 的发生 sortBy 的行为取决于传递的参数。为了实现分区内排序你需要明确控制 sortBy 的参数设置。如果不显式指定目标分区数numPartitions 参数sortBy 默认不会触发 Shuffle因此只会在分区内排序。 例子 1带 Shuffle 的全局排序 val rdd sc.parallelize(Seq(5, 2, 4, 3, 1), numSlices 2) val sortedRdd rdd.sortBy(x x, ascending true, numPartitions 3)// 指定目标分区数 println(sortedRdd.collect().mkString(, ))初始数据分区 分区 1[5, 2]分区 2[4, 3, 1]重新分区和排序后 分区 1[1, 2]分区 2[3, 4]分区 3[5]Shuffle 触发原因 数据必须重新分布确保分区键范围[1-2], [3-4], [5]。特点 触发 Shuffle 操作数据按照 RangePartitioner 进行分区。 每个分区内局部排序后实现全局排序。 例子 2分区内排序无 Shuffle val rdd sc.parallelize(Seq(5, 2, 4, 3, 1), numSlices 2) // 两个分区 // 如果只需要分区内排序mapPartitions 提供了无 Shuffle 的选择。 val sorted rdd.mapPartitions(partition partition.toList.sorted.iterator) sorted.collect().foreach(println)初始数据分区 分区 1[5, 2]分区 2[4, 3, 1]排序后 分区 1[2, 5]分区 2[1, 3, 4]无 Shuffle 原因 数据仅在分区内排序分区间顺序无全局保证。 5. 总结 sortBy 在需要全局排序时触发 Shuffle这是为了重新分区以确保分区范围和分区内排序。如果只需要分区内排序mapPartitions 提供了无 Shuffle 的选择。 注意事项 全局排序带来的 Shuffle 会显著增加网络传输和计算成本。如无必要尽量避免全局排序优先考虑局部排序或 Top-N 算法以优化性能。
http://www.dnsts.com.cn/news/100203.html

相关文章:

  • 烟台城乡建设局网站wordpress注入
  • 四川省建设注册资格中心网站在线视频下载网站如何做
  • 淘宝网站建设步骤2022今天刚刚发生地震了
  • wap网站开发招聘学做彩票网站
  • 网站开发有哪些课程南平网站建设
  • 怎么建网站 手机版深圳网站制作
  • 浙江嘉兴建设局网站教用vs2013做网站的书
  • 2008 iis 添加 网站 权限中国十大网络营销公司
  • 手机版网站开发框架国外做调灵风暴的网站
  • 衡水企业网站建设公司宁波高端品牌网站建设
  • 网站关站巩义网站建设联系电话
  • 外汇黄金网站建设wordpress代码复杂吗
  • 顺德区建设局网站怎么做线上营销
  • 河南网站开发培训价格导航网站怎么推广
  • 网站上挂百度广告联盟需要申请icp经营许可证吗潍坊做电商的网站
  • 有哪些摄影网站农村室内设计效果图
  • 做网站的赢利点唐山做网站哪家好
  • 无锡定制网站网站建设的运用场景
  • 诸暨市建设局行业管理网站国外十大免费服务器和域名
  • 涿州建设局网签网站重庆网站建设changeke
  • 南昌营销网站公司哪家好网络营销整合推广
  • 北京市建设教育协会网站首页如何制作有关西安的网站
  • 定制做网站设计绍兴网站建设网站
  • 有没有做游戏评测的网站丽水建设网站制作
  • 凉山北京网站建设水果店推广营销方案
  • 51做图片的网站小程序开发厂家
  • 网站空间送数据库网页微信授权登录
  • 太平洋网站开发销售管理系统有哪些
  • 石家庄有那些网站开发公司wordpress下拉式菜单
  • 校园图书馆网站建设方林装饰公司电话