介绍本章要点spark api.pptxVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

您可能关注的文档

文档评论(0)

136****1820 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档