Ben*_*Ben 4 sorting apache-spark
我有一个配对RDD (K, V),密钥包含a time和a ID.我想获得一个表格的配对RDD,(K, Iterable<V>)其中键由id分组,迭代按时间排序.
我目前正在使用sortByKey().groupByKey(),我的测试似乎证明它有效,但我正在读它可能并非总是如此,正如本问题所讨论的那样有不同的答案(Spark中的groupByKey是否保留原始顺序?).
它是否正确?
谢谢!
实际上不保证订单,只有哪些键最终在每个分区中.Reducers可以以任意顺序从map任务中获取数据,具体取决于首先可用的数据.如果您想要特定订单,则应对每个分区进行排序.在这里你可能会得到它,因为每个分区最终只有一个元素,而collect()确实按顺序返回分区.
在这种情况下,更好的选择是将排序应用于每个键的结果集合:
rdd.groupByKey().mapValues(_.sorted)
Run Code Online (Sandbox Code Playgroud)