apache spark中的sortbykey
Posted
技术标签:
【中文标题】apache spark中的sortbykey【英文标题】:Sortbykey in apache spark 【发布时间】:2016-07-29 05:32:22 【问题描述】:我正在使用 Apache spark 开展一个项目。我非常了解 spark 中的转换和操作,但是突然间我对 spark 中的 sortByKey() 函数感到困惑。
它是如何工作的,它是否考虑所有分区(即所有 RDD)进行排序或数据在单个 RDD 中排序?
我的要求是对数据进行全局排序,就像我们在任何编程语言中排序一样(Java 中的 Collections.sort())。
考虑下面的代码:(xyz是经过一系列操作后的rdd)
JavaPairRDD<Float,Object>sorted = xyz.transformToPair(rdd->rdd.sortByKey());
上述语句是否给出了全局排序的结果?
如果不是,那么如何对数据进行全局排序,即考虑所有分区中的所有数据?
提前致谢。
【问题讨论】:
【参考方案1】:它是全局排序的(OrderedRDDFunctions
):
对RDD进行key排序,这样每个partition都包含一个有序范围的元素。在生成的 RDD 上调用 collect 或 save 将返回或输出一个有序的记录列表(在保存的情况下,它们将按照键的顺序写入文件系统中的多个 part-X 文件)。
【讨论】:
以上是关于apache spark中的sortbykey的主要内容,如果未能解决你的问题,请参考以下文章
为啥 org.apache.spark.sql.types.DecimalType 在 Spark SQL 中的最大精度值为 38?
Spark改进|Apache Spark 3.0中的SQL性能改进概览