数组排序是一个常见的操作。基于比较的排序算法其性能下限是O(nlog(n)),但在分布式环境下面我们可以并发,从而提高性能。这里展示了Spark中数组排序的实现,并分析了性能,同时尝试找到导致性能提升的原因。
官方示例
import sys
from pyspark import SparkContext
if __name__ == "__main__":
if len(sys.argv) != 2:
print >> sys.stderr, "Usage: sort <file>"
exit(-1)
sc = SparkContext(appName="PythonSort")
lines = sc.textFile(sys.argv[1], 1)
sortedCount = lines.flatMap(lambda x: x.split(' ')) \
.map(lambda x: (int(x), 1)) \
.sortByKey(lambda x: x)
# This is just a demo on how to bring all the sorted data back to a single node.
# In reality, we wouldn't want to collect all the data to the driver node.
output = sortedCount.collect()
for (num, unitcount) in output:
print num
sc.sto

本文介绍了如何在Spark环境中进行数组排序,探讨了基于比较的排序算法性能,并通过官方示例展示了Spark的sortByKey方法实现排序的过程。同时,分析了该方法的性能提升原因,提供了一种在分布式环境下提高排序效率的方法。
最低0.47元/天 解锁文章
2155

被折叠的 条评论
为什么被折叠?



