相关疑难解决方法(0)

如何使用Spark查找中值和分位数

如何RDD使用分布式方法,IPython和Spark 找到整数的中位数?的RDD是约700 000元,因此过大,以收集和发现中位数.

这个问题与这个问题类似.但是,问题的答案是使用Scala,我不知道.

如何使用Apache Spark计算精确中位数?

使用Scala答案的思考,我试图在Python中编写类似的答案.

我知道我首先要排序RDD.我不知道怎么.我看到sortBy(按给定的方式对此RDD进行排序keyfunc)和sortByKey(对此进行排序RDD,假设它由(键,值)对组成.)方法.我认为两者都使用键值,而我RDD只有整数元素.

  1. 首先,我在考虑做什么myrdd.sortBy(lambda x: x)
  2. 接下来我将找到rdd(rdd.count())的长度.
  3. 最后,我想在rdd的中心找到元素或2个元素.我也需要这个方法的帮助.

编辑:

我有个主意.也许我可以索引我的RDD然后key = index和value = element.然后我可以尝试按价值排序?我不知道这是否可行,因为只有一种sortByKey方法.

python median apache-spark rdd pyspark

55
推荐指数
3
解决办法
6万
查看次数

如何在spark中的DataFrame中计算列的百分位数?

我正在尝试计算DataFrame中列的百分位数?我无法在Spark聚合函数中找到任何percentile_approx函数.

例如在Hive中我们有percentile_approx,我们可以通过以下方式使用它

hiveContext.sql("select percentile_approx("Open_Rate",0.10) from myTable); 
Run Code Online (Sandbox Code Playgroud)

但出于性能原因,我想使用Spark DataFrame来实现它.

样本数据集

|User ID|Open_Rate|
------------------- 
|A1     |10.3     |
|B1     |4.04     |
|C1     |21.7     |
|D1     |18.6     |
Run Code Online (Sandbox Code Playgroud)

我想知道有多少用户分为10百分位或20百分位等等.我想做这样的事情

df.select($"id",Percentile($"Open_Rate",0.1)).show
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql spark-dataframe

10
推荐指数
2
解决办法
9831
查看次数