首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算Apache Spark中的百分数?

如何计算Apache Spark中的百分数?

提问于 2018-02-04 15:54:09
回答 2关注 0查看 863

我有一个整数的rdd(即RDD[Int]),我想做的是计算以下10个百分数:[0th, 10th, 20th, ..., 90th, 100th].怎样才是最有效的方法?

回答 2

艾迦号

发布于 2018-02-05 01:42:49

可以参考下面的链接:

https://gist.github.com/felixcheung/92ae74bc349ea83a9e29

函数如下:

代码语言:txt
AI代码解释
复制
  /**
   * compute percentile from an unsorted Spark RDD
   * @param data: input data set of Long integers
   * @param tile: percentile to compute (eg. 85 percentile)
   * @return value of input data at the specified percentile
   */
  def computePercentile(data: RDD[Long], tile: Double): Double = {
    // NIST method; data to be sorted in ascending order
    val r = data.sortBy(x => x)
    val c = r.count()
    if (c == 1) r.first()
    else {
      val n = (tile / 100d) * (c + 1d)
      val k = math.floor(n).toLong
      val d = n - k
      if (k <= 0) r.first()
      else {
        val index = r.zipWithIndex().map(_.swap)
        val last = c
        if (k >= c) {
          index.lookup(last - 1).head
        } else {
          index.lookup(k - 1).head + d * (index.lookup(k).head - index.lookup(k - 1).head)
        }
      }
    }
  }

也许

发布于 2018-02-05 00:30:22

你可以:

  1. 通过rdd.sortBy()对数据集进行排序
  2. 通过rdd.count()计算数据集的大小
  3. 用索引进行压缩以便于检索百分数
  4. 通过rdd.lookup()检索所需的百分位数,例如第十百分位数rdd.lookup(0.1)*大小)

计算中位数和第九十九百分位数:getPercentiles(rdd,新双)。[]{0.5,0.99},大小,数字);

在Java 8中:

代码语言:txt
AI代码解释
复制
public static double[] getPercentiles(JavaRDD<Double> rdd, double[] percentiles, long rddSize, int numPartitions) {
    double[] values = new double[percentiles.length];

    JavaRDD<Double> sorted = rdd.sortBy((Double d) -> d, true, numPartitions);
    JavaPairRDD<Long, Double> indexed = sorted.zipWithIndex().mapToPair((Tuple2<Double, Long> t) -> t.swap());

    for (int i = 0; i < percentiles.length; i++) {
        double percentile = percentiles[i];
        long id = (long) (rddSize * percentile);
        values[i] = indexed.lookup(id).get(0);
    }

    return values;
}
和开发者交流更多问题细节吧,去 写回答
相关文章
Decision Trees in Apache Spark (Apache Spark中的决策树)
Decision Trees in Apache Spark 原文作者:Akash Sethi 原文地址:https://dzone.com/articles/decision-trees-in-apache-spark 译者微博:@从流域到海域 译者博客:blog.csdn.blog/solo95 本文同样刊载于腾讯云+:https://cloud.tencent.com/developer/article/1034616 ​ Apache Spark中的决策树 决策树是在顺序决策问题进行
Steve Wang
2018/02/05
1.2K0
Decision Trees in Apache Spark (Apache Spark中的决策树)
Apache Spark中的决策树
原文地址:https://dzone.com/articles/decision-trees-in-apache-spark
花落花飞去
2018/02/01
2.1K0
Apache Spark中的决策树
Apache Spark 1.1中的统计功能
Apache Spark中的理念之一就是提供丰富友好的内置库,以便用户可以轻松组织数据管道。随着 Spark,尤其是 MLlib 在数据科学家和机器学习从业者中迅速风靡,我们窥见了模型拟合之外对数据分析支持的需求。为了满足这种需求,我们开始添加通用统计函数的可扩展实现来升级数据管道的各个组件。现在我们很高兴地宣布Apache Spark 1.1 内置了对探索性数据管道中常见的几种统计算法的支持:
2018/02/09
2.2K0
Apache Spark 1.1中的统计功能
Apache Zeppelin 中 Spark 解释器
概述 Apache Spark是一种快速和通用的集群计算系统。它提供Java,Scala,Python和R中的高级API,以及支持一般执行图的优化引擎。Zeppelin支持Apache Spark
片刻
2018/01/05
4.4K0
Apache Zeppelin 中 Spark 解释器
Spark on Kubernetes:Apache YuniKorn如何提供帮助
Apache Spark在一个平台上统一了批处理、实时处理、流分析、机器学习和交互式查询。尽管Apache Spark提供了许多功能来支持各种用例,但它为集群管理员带来了额外的复杂性和较高的维护成本。让我们看一下底层资源协调器的一些高级要求,以使Spark成为一个平台:
大数据杂货铺
2020/10/29
1.8K0
Spark on Kubernetes:Apache YuniKorn如何提供帮助
Apache Spark 2.2中基于成本的优化器(CBO)
问题导读 1.什么是CBO,RBO? 2.什么是执行计划? 3.什么是join,filter? 4.事实表和维度表的区别? Apache Spark 2.2最近装备了高级的基于成本的优化器框架用于收集
用户1410343
2018/03/26
2.4K0
Apache Spark 2.2中基于成本的优化器(CBO)
Apache Spark快速入门
https://www.iteblog.com/archives/1408.html 一、 为什么要选择Apache Spark 当前,我们正处在一个“大数据"的时代,每时每刻,都有各种类型的数据被生产。而在此紫外,数据增幅的速度也在显著增加。从广义上看,这些数据包含交易数据、社交媒体内容(比如文本、图像和视频)以及传感器数据。那么,为什么要在这些内容上投入如此多精力,其原因无非就是从海量数据中提取洞见可以对生活和生产实践进行很好的指导。   在几年前,只有少部分公司拥有足够的技术力量和资金去储存和挖掘大
Albert陈凯
2018/04/04
1.5K0
Apache Spark快速入门
带有Apache Spark的Lambda架构
市场上的许多玩家已经建立了成功的MapReduce工作流程来每天处理以TB计的历史数据。但是谁愿意等待24小时才能获得最新的分析结果?这篇博文将向您介绍旨在利用批处理和流处理方法的Lambda架构。我们将利用Apache Spark(Core,SQL,Streaming),Apache Parquet,Twitter Stream等实时流数据快速访问历史数据。还包括清晰的代码和直观的演示!
大数据弄潮儿
2018/05/29
2.5K0
带有Apache Spark的Lambda架构
BigData |述说Apache Spark
Spark是一个Apache项目,被标榜为"Lightning-Fast"的大数据处理工具,它的开源社区也是非常活跃,与Hadoop相比,其在内存中运行的速度可以提升100倍。Apache Spark在Java、Scale、Python和R语言中提供了高级API,还支持一组丰富的高级工具,如Spark SQL(结构化数据处理)、MLlib(机器学习)、GraphX(图计算)、SparkR(统计分析)以及Spark Streaming(处理实时数据)。
Sam Gor
2019/08/21
8540
Apache Spark相比Hadoop的优势
https://www.iteblog.com/archives/1126.html?from=like 以下的话是由Apache Spark committer的Reynold Xin阐述。(就是著
Albert陈凯
2018/04/04
8680
spark master开发中org.apache.spark.serializer.JavaDeserializationStream错误解决
val conf = new SparkConf().setMaster("spark://hostname:7077").setAppName("Spark Pi")
sparkexpert
2022/05/07
4240
如何使用Apache Spark MLlib预测电信客户流失
Spark MLLib是一个用于在海量数据集上执行机器学习和相关任务的库。使用MLlib,可以对十亿个观测值进行机器学习模型的拟合,可能只需要几行代码并利用数百台机器就能达到。MLlib大大简化了模型开发过程。
用户1415462
2018/05/30
4.4K0
spark中distinct是如何实现的?
这个过程是,先通过map映射每个元素和null,然后通过key(此时是元素)统计{reduceByKey就是对元素为KV对的RDD中Key相同的元素的Value进行binary_function的reduce操作,因此,Key相同的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。},最后再同过map把去重后的元素挑出来。
CoreDao
2021/04/13
1.6K0
spark中distinct是如何实现的?
CDH中如何升级Spark
通过上面的过程分析,可以知道,Spark版本存在两个地方:一个是A节点提交Spark-submit的程序必须是2.3.0版本的;另一个是Yarn使用的lib必须是2.3.0版本的。
用户1154259
2018/07/31
9550
CDH中如何升级Spark
如何使用 Apache IoTDB 中的 UDF
本文将概述用户使用 UDF 的大致流程,UDF 的详细使用说明请参考官网用户手册:
Apache IoTDB
2023/03/21
1.6K0
如何使用 Apache IoTDB 中的 UDF
Shark,Spark SQL,Spark上的Hive以及Apache Spark上的SQL的未来
随着Spark SQL和Apache Spark effort(HIVE-7292)上新Hive的引入,我们被问到了很多关于我们在这两个项目中的地位以及它们与Shark的关系。在今天的Spark峰会上,我们宣布我们正在结束Shark的开发,并将我们的资源集中到Spark SQL,这将为现有Shark用户提供一个超棒的Shark的功能。特别是,Spark SQL将提供来自Shark 0.9服务器的无缝升级路径以及与一般Spark程序集成的新功能。
哒呵呵
2018/08/06
1.7K0
Apache spark 的一些浅见。
分布并行计算和几个人一起搬砖的意思是一致的,一个资源密集型的任务(搬砖或计算),需要 一组资源(小伙伴或计算节点),并行地完成:
笔阁
2018/09/04
6690
Apache spark 的一些浅见。
自学Apache Spark博客(节选)
作者:Kumar Chinnakali 译者:java达人 来源:http://dataottam.com/2016/01/10/self-learn-yourself-apache-spark-in-21-blogs-3/(点击文末阅读原文前往) 一、 Spark项目最初由加州大学伯克利分校AMP实验室的Matei在2009年发起,并在2010年根据BSD协议开源。2013年,该项目捐献给Apache软件基金会,转为Apache2.0 协议。2014年二月,Spark成为Apache重点项目。201
java达人
2018/01/31
1.4K0
自学Apache Spark博客(节选)
【干货】基于Apache Spark的深度学习
【导读】本文主要介绍了基于Apache Spark的深度学习。我们知道Spark是快速处理海量数据的框架,而深度学习一直以来都非常耗费硬件资源,因此使用在Spark框架上进行深度学习对于提升速度是非常有用的。本文介绍了Apache Spark内部结构和工作原理,以及一些实用Spark的深度学习库,并在最后介绍了相关DL pipelines库。想要学习基于Spark分布式深度学习库的读者可以了解下。 作者 | Favio Vázquez 编译 | 专知 参与 | Fan, Hujun 基于Apache Spa
WZEARW
2018/06/05
3.3K0
点击加载更多

相似问题

org.apache.spark.executor.CoarseGrainedExecutor?

0292

spark的executor容器资源如何规划?

0108

自行安装的spark如何识别cosn:// uri?

1447

spark executor容器内存如何规划?

0132

spark容器运行任务数量如何优化?

092
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档