如何使用 Apache Spark 有效計算大型資料集的中位數和分位數?

Mary-Kate Olsen
發布: 2024-10-29 07:53:02
原創
820 人瀏覽過

How can you efficiently calculate medians and quantiles for large datasets using Apache Spark?

使用Apache Spark 分佈中位數和分位數

對於使用IPython 和Spark 對大整數RDD 進行分佈式中位數計算,適當的方法是排序RDD,然後存取中間元素。若要對 RDD 進行排序,請使用 sortBy() 方法。若要找出中位數,請執行下列步驟:

  1. 匯入必要的函式庫:先匯入 NumPy 進行中位數計算。
  2. 對 RDD 進行排序: 對 RDD 進行排序以允許存取中位數元素。
  3. 計算中位數: 透過取得排序後的 RDD 的中間元素來存取中位數。

對於分位數,您可以使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!