Comment calculer efficacement les médianes et les quantiles pour de grands ensembles de données à l'aide d'Apache Spark ?

Mary-Kate Olsen
Libérer: 2024-10-29 07:53:02
original
820 Les gens l'ont consulté

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

Distribution de la médiane et des quantiles avec Apache Spark

Pour le calcul de la médiane distribuée d'un grand RDD entier à l'aide d'IPython et Spark, l'approche appropriée consiste à trier le RDD puis accéder au(x) élément(s) intermédiaire(s). Pour trier le RDD, utilisez la méthode sortBy(). Pour trouver la médiane, effectuez ces étapes :

  1. Importer les bibliothèques nécessaires : Commencez par importer NumPy pour le calcul de la médiane.
  2. Triez le RDD : Triez le RDD pour permettre l'accès à l'élément médian.
  3. Calculez la médiane : Accédez à la valeur médiane en obtenant l'élément médian du RDD trié.

Pour les quantiles, vous pouvez utiliser la méthode approxQuantile() introduite dans Spark 2.0 ou créer du code personnalisé à l'aide de l'algorithme de Greenwald-Khanna. Ces fonctions calculent des quantiles avec une erreur relative spécifiée.

Calcul de quantile personnalisé : Voici une fonction PySpark personnalisée pour l'estimation de quantile :

<code class="python">def quantile(rdd, p, sample=None, seed=None):
    # ... (function implementation as provided in the original question)</code>
Copier après la connexion

Calcul de quantile exact (Spark < 2.0) :

Si la précision est primordiale, envisagez de collecter et de calculer les quantiles localement à l'aide de NumPy. Cette approche est souvent plus efficace et évite les calculs distribués. Cependant, les besoins en mémoire peuvent être importants.

Quantile UDAF Hive :

Lors de l'utilisation de HiveContext avec des valeurs intégrales ou continues, les UDAF Hive offrent une autre option pour l'estimation des quantiles. Ces fonctions sont accessibles via des requêtes SQL sur un DataFrame :

<code class="sql">sqlContext.sql("SELECT percentile_approx(x, 0.5) FROM df")</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!