首页 > 其他分享 >spark rdd median 中位数求解

spark rdd median 中位数求解

时间:2023-05-30 22:03:30浏览次数:39  
标签:count val RDD median rdd lookup sorted spark

lookup(key)

Return the list of values in the RDD for key key. This operation is done efficiently if the RDD has a known partitioner by only searching the partition that the key maps to.

>>> l = range(1000)
>>> rdd = sc.parallelize(zip(l, l), 10)
>>> rdd.lookup(42)  # slow
[42]
>>> sorted = rdd.sortByKey()
>>> sorted.lookup(42)  # fast
[42]
>>> sorted.lookup(1024)
[]
>>> rdd2 = sc.parallelize([(('a', 'b'), 'c')]).groupByKey()
>>> list(rdd2.lookup(('a', 'b'))[0])
['c']

You need to sort RDD and take element in the middle or average of two elements. Here is example with RDD[Int]:

import org.apache.spark.SparkContext._

  val rdd: RDD[Int] = ???

  val sorted = rdd.sortBy(identity).zipWithIndex().map {
    case (v, idx) => (idx, v)
  }

  val count = sorted.count()

  val median: Double = if (count % 2 == 0) {
    val l = count / 2 - 1
    val r = l + 1
    (sorted.lookup(l).head + sorted.lookup(r).head).toDouble / 2
  } else sorted.lookup(count / 2).head.toDouble


实验:
all_data = sc.parallelize([25,1,2,3,4,5,6,7,8,100])
all_data.sortBy(lambda x:x).zipWithIndex().map(lambda x: (x[1],x[0])).collect
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 25), (9, 100)]

 



标签:count,val,RDD,median,rdd,lookup,sorted,spark
From: https://blog.51cto.com/u_11908275/6382302

相关文章

  • python spark 求解最大 最小 平均 中位数
    rating_data_raw=sc.textFile("%s/ml-100k/u.data"%PATH)printrating_data_raw.first()num_ratings=rating_data_raw.count()print"Ratings:%d"%num_ratings#In[35]:rating_data=rating_data_raw.map(lambdaline:line.split(&quo......
  • pyspark
    一、pyspark为了让Spark支持Python,ApacheSpark社区发布了一个工具PySpark。使用PySpark,我们可以使用Python编程语言处理RDD。这一切是由一个名为Py4j的库达到的。其架构如下所示。PySpark的优势之一是在开发中允许你直接调用Python的内置库和第三方库如果Spark是本地模式,可以直接......
  • Spark入门看这篇就够了(万字长文)
    本文已收录至Github,推荐阅读......
  • 本地spark通过spark集群连接hive
    最近在学习spark,上周将spark集群搭建起来了,今天在idea中创建了一个测试程序读取hive库中的数据,程序很简单,但是踩到一些坑,卡了四五个小时,做个记录。搭建Spark集群比较简单:1、安装scala,scala版本要和spark使用的scala版本一致(因为这个问题卡了五六个小时)2、下载、解压,配置环境变......
  • SparkSQL
    目录SparkSQL数据抽象案例一:加载数据成分布式表案例二:将RDD转为DataFrame使用样例类指定类型+列名自定义Schema案例三:RDD-DF-DS相互转换案例四:SparkSQL花式查询需求一、SQL和DSL两种方式实现各种查询案例五:SparkSQL实现WordCount案例六:多数据源支持案例七:电影数据分析案例八:SparkS......
  • 在本地运行spark程序,出现Scala module 2.13.4 requires Jackson Databind version >=
    这是jackson多版本题,我们需要屏蔽所有hadoop组件中的Jackson,在pom.xml文件里修改:添加<exclusions><exclusion><groupId>com.fasterxml.jackson.module</groupId><artifactId>*</artifactId></exclusion><exclusion>......
  • 「解题报告」AGC012F Prefix Median
    好可怕。AtCoder的一贯风格,先找合法序列的充要条件,然后DP计数。首先把数组排序,这个显然。先找显然的必要条件。首先\(b_i\in[i,2n-i]\),这个比较显然。然后发现加数很不好考虑,我们考虑倒过来删数。每次删两个数,不难发现中位数只会不变或向左/向右移动一位。于是,我们......
  • AtCoder Regular Contest 133 E Cyclic Medians
    洛谷传送门AtCoder传送门其实是套路题,但是为什么做不出来啊第一步就是经典套路。枚举\(k\),统计中位数\(>k\)的方案数,加起来就是中位数的总和。那么现在\(x_{1\simn},y_{1\simm}\)就变成了\(0/1\)序列,考虑一次操作,如果\((x,y)=(0,0)\),那么\(a\)会变成\(0\)......
  • 九、部署Spark
    服务和组件Hadoop2.7.1、Zookeeper3.4.8、Scala2.11.8解压:tar-zxvfspark-2.1.1-bin-hadoop2.7.tgz重命名:mvspark-2.1.1-bin-hadoop2.7spark配置环境变量:vi/etc/profileexportSPARK_HOME=/usr/local/src/sparkexportPATH=$PATH:$SPARK_HOME/bin:$PATH刷新:sour......
  • 大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战
     大数据Spark“蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战selectsum_all(age)from...hive>usedefault;showtables;select*fromemployeeforhaving;一:udf编码importorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;pub......