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的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark 中的共享变量

为啥 org.apache.spark.sql.types.DecimalType 在 Spark SQL 中的最大精度值为 38?

apache spark中的sortbykey

Spark改进|Apache Spark 3.0中的SQL性能改进概览

forEach Spark Scala 中的错误:值选择不是 org.apache.spark.sql.Row 的成员

Apache Spark 和 Apache Flink 中的“流”是啥意思?