我想要做的是這樣的: 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什麼矢量?你能告訴我們嗎? –