使用Apache Spark 分佈中位數和分位數
對於使用IPython 和Spark 對大整數RDD 進行分佈式中位數計算,適當的方法是排序RDD,然後存取中間元素。若要對 RDD 進行排序,請使用 sortBy() 方法。若要找出中位數,請執行下列步驟:
對於分位數,您可以使用 Spark 2.0 中引入的 approxQuantile() 方法或使用 Greenwald-Khanna 演算法建立自訂程式碼。這些函數使用指定的相對誤差計算分位數。
自訂分位數計算:這是用於分位數估計的自訂PySpark 函數:
<code class="python">def quantile(rdd, p, sample=None, seed=None): # ... (function implementation as provided in the original question)</code>
精確分位數計算(Spark
如果準確性至關重要,請考慮使用NumPy 在本地收集和計算分位數。這種方法通常更有效並且避免了分散式計算。但是,記憶體需求可能會很高。
Hive UDAF 分位數:
將 HiveContext 與整數或連續值一起使用時,Hive UDAF 提供了另一種分位數估計選項。可以透過針對 DataFrame 的 SQL 查詢來存取這些函數:
<code class="sql">sqlContext.sql("SELECT percentile_approx(x, 0.5) FROM df")</code>
以上是如何使用 Apache Spark 有效計算大型資料集的中位數和分位數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!