예제 #1
0
def median(rdd: RDD) -> float:
	sorted_and_indexed = rdd.sortBy(lambda x: x).zipWithIndex().map(lambda v, k: (k, v))
	n = sorted_and_indexed.count()
	if n % 2 == 1:
		return sorted_and_indexed.lookup((n-1) / 2)[0]
	else:
		v1 = sorted_and_indexed.lookup(n / 2)[0]
		v2 = sorted_and_indexed.lookup((n / 2) - 1)[0]
		return (v1 + v2) / 2.0