package day03
import org.apache.spark.{SparkConf, SparkContext}
/**
* RanagePartitioner采用的是"水塘抽样"算法,可以对数据进行相对均匀的分配
* 原理是,.在分配之前对数据进行抽样
*
* 与hashPartitioner不同的是,hashPartitioner是根据key取HashCode值进行分区,但是这种分区方式
* 不能均匀的分配数据,是Spark的默认分区方式
*
* RanagePartitioner:可以根据范围进行分区,可以均匀的分配数据,分区内有序,全局无序
* 如果需要实现全局有序,需要将数据收集到Driver端进行输出
*/
object RanagePartitioner {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("RanagePartitioner").setMaster("local[*]")
val sc =new SparkContext(conf)
val list =Array(1,22,3,4,5,90,66,55,87,34,22,99)
val numbers=sc.parallelize(list)
//局部有序,全局有序
val result =numbers.sortBy(x=>x)
//定义一个函数变量
val func =(index:Int,it:Iterator[Int])=>{
println(s"index:${index}, ele:${it.toList.mkString(",")}")
it
}
val result2=result.mapPartitionsWithIndex(func)
//收集到Driver端
re
对于sortBy算子的一些理解
最新推荐文章于 2024-05-30 13:59:31 发布
本文探讨了Spark中的sortBy算子,该算子用于对数据集进行排序。通过深入解析其工作原理和用法,帮助读者更好地理解和应用此功能。
摘要由CSDN通过智能技术生成