Apache Spark を使用した中央値と分位点の分散
IPython と Spark を使用した大きな整数 RDD の分散中央値計算の場合、適切なアプローチはソートです。 RDD にアクセスしてから、中間の要素にアクセスします。 RDD をソートするには、sortBy() メソッドを使用します。中央値を見つけるには、次の手順を実行します:
分位数の場合、Spark 2.0 で導入されたおおよそQuantile() メソッドを使用するか、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 Quantile:
整数値または連続値で HiveContext を使用する場合、Hive UDAF は分位点推定の別のオプションを提供します。これらの関数には、DataFrame に対する SQL クエリを介してアクセスできます:
<code class="sql">sqlContext.sql("SELECT percentile_approx(x, 0.5) FROM df")</code>
以上がApache Spark を使用して大規模なデータセットの中央値と分位数を効率的に計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。