- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
sparkAPI(二)
本章要点一、概述二、sortBy函数实现以及使用三、sortByKey函数实现以及使用
概述在很多应用场景都需要对结果数据进行排序,Spark中有时也不例外。在Spark中存在两种对RDD进行排序的函数,分别是sortBy和sortByKey函数。sortBy是对标准的RDD进行排序,它是从Spark0.9.0之后才引入的(可以参见SPARK-1063)。而sortByKey函数是对PairRDD进行排序,也就是有Key和Value的RDD。下面将分别对这两个函数的实现以及使用进行说明。
sortBy函数实现以及使用sortBy函数是在org.apache.spark.rdd.RDD类中实现的,它的实现如下defsortBy[K](f:(T)=K,ascending:Boolean=true,numPartitions:Int=this.partitions.size)(implicitord:Ordering[K],ctag:ClassTag[K]):RDD[T]=this.keyBy[K](f).sortByKey(ascending,numPartitions).values
sortBy函数实现以及使用该函数最多可以传三个参数:第一个参数是一个函数,该函数的也有一个带T泛型的参数,返回类型和RDD中元素的类型是一致的;第二个参数是ascending,从字面的意思大家应该可以猜到,是的,这参数决定排序后RDD中的元素是升序还是降序,默认是true,也就是升序;第三个参数是numPartitions,该参数决定排序后的RDD的分区个数,默认排序后的分区个数和排序之前的个数相等,即为this.partitions.size。
sortBy函数实现以及使用从sortBy函数的实现可以看出,第一个参数是必须传入的,而后面的两个参数可以不传入。而且sortBy函数函数的实现依赖于sortByKey函数,关于sortByKey函数后面会进行说明。keyBy函数也是RDD类中进行实现的,它的主要作用就是将将传进来的每个元素作用于f(x)中,并返回tuples类型的元素,也就变成了Key-Value类型的RDD了,它的实现如下:defkeyBy[K](f:T=K):RDD[(K,T)]={map(x=(f(x),x))}
使用scalavaldata=List(3,1,90,3,5,12)data:List[Int]=List(3,1,90,3,5,12)scalavalrdd=sc.parallelize(data)rdd:org.apache.spark.rdd.RDD[Int]=ParallelCollectionRDD[0]atparallelizeatconsole:14scalardd.collectres0:Array[Int]=Array(3,1,90,3,5,12)scalardd.sortBy(x=x).collectres1:Array[Int]=Array(1,3,3,5,12,90)
使用scalardd.sortBy(x=x,false).collectres3:Array[Int]=Array(90,12,5,3,3,1)scalavalresult=rdd.sortBy(x=x,false)result:org.apache.spark.rdd.RDD[Int]=MappedRDD[23]atsortByatconsole:16scalaresult.partitions.sizeres9:Int=2scalavalresult=rdd.sortBy(x=x,false,1)result:org.apache.spark.rdd.RDD[Int]=MappedRDD[26]atsortByatconsole:16
使用scalaresult.partitions.sizeres10:Int=1上面的实例对rdd中的元素进行升序排序。并对排序后的RDD的分区个数进行了修改,上面的result就是排序后的RDD,默认的分区个数是2,而我们对它进行了修改,所以最后变成了1。
sortByKey函数实现以及使用sortByKey函数作用于Key-Value形式的RDD,并对Key进行排序。它是在org.apache.spark.rdd.OrderedRDDFunc
您可能关注的文档
- 医用冰垫制作素材薇诺娜新产品上线.pdf
- 腈制备方法如下columbia有机化学课件20 html.pptx
- 工作场所空气中乙二醇职业接触限值及其测定方法卫生网.pdf
- 玄武接口网关新协议.pdf
- 章语言基本知识公选课件-c language.pdf
- ni规格除非另有说明下面列出均为内皮.pdf
- mang 6295金融学概论讲师taufiq outline.pdf
- 交强险互碰赔偿处理规则版.pdf
- 购房七论绿景苑现象剖析录.pdf
- 文稿教程杜项目9000 h pln.pdf
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)