15
A
回答
16
你需要理清RDD并采取元素中的两个元素的中间或平均。这是例如用RDD [INT]:
import org.apache.spark.SparkContext._
val rdd: RDD[Int] = ???
val sorted = rdd.sortBy(identity).zipWithIndex().map {
case (v, idx) => (idx, v)
}
val count = sorted.count()
val median: Double = if (count % 2 == 0) {
val l = count/2 - 1
val r = l + 1
(sorted.lookup(l).head + sorted.lookup(r).head).toDouble/2
} else sorted.lookup(count/2).head.toDouble
3
使用星火2.0+和数据帧API,你可以使用approxQuantile
方法:
def approxQuantile(col: String, probabilities: Array[Double], relativeError: Double)
它也将在多个列,因为同时工作Spark版本2.2。通过将probabilites
设置为Array(0.5)
和relativeError
为0,它将计算确切的中值。从documentation:
实现的相对目标精度(大于或等于0)。如果设置为零,则计算确切的分位数,这可能非常昂贵。
尽管如此,当将relativeError
设置为0时,似乎存在一些精度问题,请参阅问题here。接近于0的低错误在某些情况下会更好地工作(取决于Spark版本)。
一个小工作示例,其计算的数字从1到99(包括两个端值)的中值,并使用低relativeError
:
val df = (0 to 99).toDF("num")
val median = df.stat.approxQuantile("num", Array(0.5), 0.001)(0)
println(median)
平均返回是50.0。
相关问题
- 1. Apache Spark中的Jaro-Winkler分数计算
- 2. 如何计算Apache Spark中RowMatrix的逆函数?
- 3. Apache Spark - 计算相关性
- 4. 如何使用Python Dataframe API在Apache Spark中查找中位数?
- 5. 用Apache Spark计算堪培拉距离
- 6. Spark Dataframe计算数组百分位数
- 7. 如何计算Apache Spark中两个分布式RowMatrix的点积?
- 8. 如何计算Apache Spark中的百分比
- 9. Apache Spark - 如何计算配对RDD中的相似键/值对
- 10. 如何使用spark数据框API来计算groupBy的分位数?
- 11. 使用Apache Spark,如何计算Scala阵列中每个对的出现
- 12. Javascript:如何计算视口的确切位置?
- 13. 如何计算中位数?
- 14. 使用JavaScript计算确切更改
- 15. SQL:确切使用计数
- 16. 如何计算Haskell中的确切(整数)行列式?
- 17. 如何计算Apache Spark DataFrame中所有列的不同值的数量
- 18. 如何使用UIKit计算文本的确切高度?
- 19. Apache Spark reduceByKey总计小数
- 20. Apache Spark DStream中的计数元素
- 21. 如何在Apache Spark中使用Stanford NER
- 22. 如何使用Hadoop InputFormats在Apache Spark中?
- 23. 如何正确使用Java Spark在Apache Spark中制作TF-IDF语句向量?
- 24. 使用Apache-Spark进行迭代计算时出现StackOverflowError
- 25. 计算中位数
- 26. 如何使用Window()计算Pyspark中的滚动中位数?
- 27. 如何计算变量的中位数?
- 28. 如何计算int值中的位数?
- 29. 你如何计算int中的位数?
- 30. 如何计算AWS Redshift的中位数?
这是什么“查找”方法? AFAIK它不存在于RDD中。 – javadba 2015-01-28 10:21:06
@javadba是的,你需要导入SparkContext._带来PairRDD暗示范围 – 2015-01-28 14:21:27
p.s.我认为有更快的算法找到不需要完整排序的中位数(http://en.wikipedia.org/wiki/Selection_algorithm) – 2015-05-20 17:45:34