我想要做的是这样的: http://cn.mathworks.com/help/matlab/ref/median.html?requestedDomain=www.mathworks.com 找到每列的中值。 这可以通过将RDD收集到驱动程序来完成,以获得一个不可能的大数据。 我知道Statistics.colStats()可以计算均值,方差...但不包括中位数。 此外,矢量是高维和稀疏的。如何高效地计算Spark中RDD [org.apache.spark.mllib.linalg.Vector]的中值?
2
A
回答
0
嗯,我听不懂的向量部分,但是这是我的做法(我打赌有更好的):
val a = sc.parallelize(Seq(1, 2, -1, 12, 3, 0, 3))
val n = a.count()/2
println(n) // outputs 3
val b = a.sortBy(x => x).zipWithIndex()
val median = b.filter(x => x._2 == n).collect()(0)._1 // this part doesn't look nice, I hope someone tells me how to improve it, maybe zero?
println(median) // outputs 2
b.collect().foreach(println) // (-1,0) (0,1) (1,2) (2,3) (3,4) (3,5) (12,6)
关键是你的dataset
使用sortBy
进行排序,然后用拉链的条目他们的索引使用zipWithIndex
然后得到中间的条目,请注意,为了简单起见,我设置了奇数个样本,但其实质是存在的,除此之外,您必须对数据集的每一列执行此操作。
+1
“诀窍是使用sortBy对数据集进行排序,”sloooow。有更快的算法,但它们仍然是O(N)。另外,在OP的例子中,他每行最多有400个条目,这意味着排序400次 –
+0
@ TheArchetypalPaul我在我的回答“我敢打赌,有更好的”我说,我希望有人发布他们,所以我可以学习:) –
相关问题
- 1. Spark RDD:如何最有效地计算统计信息?
- 2. 如何计算Spark RDD的平均值?
- 3. Apache Spark - 如何计算配对RDD中的相似键/值对
- 4. spark(scala)三个单独的rdd [org.apache.spark.mllib.linalg.Vector]到单个rdd [矢量]
- 5. 使用Scala将org.apache.spark.mllib.linalg.Vector RDD转换为Spark中的DataFrame
- 6. 如何高效地计算python中的移动平均值
- 7. 将RDD [org.apache.spark.sql.Row]转换为RDD [org.apache.spark.mllib.linalg.Vector]
- 8. 如何高效地计算MySQL中的序列中断/空洞?
- 9. 如何提高spark rdd的可读性?
- 10. 如何高效地计算MongoDB中的过滤文件$ group operator
- 11. 如何高效地计算R中稀疏矩阵的PPMI?
- 12. MySQL:如何高效地计算大表中的行数?
- 13. 如何在Java中高效地计算CSV文件的行
- 14. 计算RDD中的行数
- 15. 使用数组对象计算Spark RDD中的不同文本
- 16. spark:如何有效地合并混洗rdd?
- 17. 在Spark中高效地读取json
- 18. 如何使用Spark Stream中的先前计算结果加入Stream RDD?
- 19. 如何用spark/scala计算RDD中两个相邻数字的总和?
- 20. 如何计算Spark中的多个值的平均值
- 21. 如何高效地计算Python中两个高斯分布的热图?
- 22. 使用Spark匹配Scala中的RDD值
- 23. Spark RDD-地图vs mapPartitions
- 24. 高效地计算平方差之和
- 25. 如何使用C#高效地计算社会份额计数
- 26. 有效的中值计算
- 27. 其他RDD中的Java Spark RDD?
- 28. 计算dataframe中的空值:scala spark
- 29. 如何有效地计算一个数组的索引,其中累积和超过了Scala中的阈值--Spark?
- 30. 如何高效地读取spark中的路径文件,即希望`wholeTextFiles`返回`RDD [String,Iterator [String]]`
我收集RDD给驱动程序,然后计算它。 – guxiang
@guxiang那个方法很麻烦,因为有些数据集不适合只有一台电脑 –
@guxiang什么矢量?你能告诉我们吗? –