Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 将一列的百分比用于另一列_Apache Spark_Apache Spark Sql_Percentile - Fatal编程技术网

Apache spark 将一列的百分比用于另一列

Apache spark 将一列的百分比用于另一列,apache-spark,apache-spark-sql,percentile,Apache Spark,Apache Spark Sql,Percentile,我需要按另一列的百分比对一列进行排序 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions.percent_rank val df = List((13,3), (12,5), (11,7), (8,8), (4,5), (3,4), (2,1), (1,2), (1,6) ,(1,12)).toDF("val1","val2") val w = Window.orderBy

我需要按另一列的百分比对一列进行排序

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.percent_rank

val df = List((13,3), (12,5), (11,7), (8,8), (4,5), (3,4), (2,1), (1,2), (1,6) ,(1,12)).toDF("val1","val2")

val w =  Window.orderBy(df("val1"))
df.select($"val1", $"val2",percent_rank().over(w).alias("val1_percent")).show()
我得到的结果是:

+----+----+------------------+
|val1|val2|      val1_percent|
+----+----+------------------+
|   1|   2|               0.0|
|   1|   6|               0.0|
|   1|  12|               0.0|
|   2|   1|0.3333333333333333|
|   3|   4|0.4444444444444444|
|   4|   5|0.5555555555555556|
|   8|   8|0.6666666666666666|
|  11|   7|0.7777777777777778|
|  12|   5|0.8888888888888888|
|  13|   3|               1.0|
+----+----+------------------+
但我想得到的是列“val2”的排名和百分比“val1”,即在下表中,我想得到列“val2_%”:

请注意,在Excel中,它与PERCENTRANK方法配合良好。您可以这样使用它:PERCENTRANK([val1所有值],[val2的一个值])

编辑:
在Excel中,我将val1的所有值放在A列,val2的所有值放在B列。对于以下公式=PERCENTRANK(A1:A10,B1),我得到0.333(如果B1=2)

如何计算
val2_%
?我不清楚。在Excel中,你这样写:我把所有的val1都放在A列,如果我写
=PERCENTRANK(A1:A10,3)
我得到0.333,很抱歉,我不明白你的问题。没有excel,如何计算val2_percent@eliasah@JacekLaskowski LOL我知道如何使用excel,但我不确定A1:A10代表的范围是什么:)如何计算
val2_%
?我不清楚。在Excel中,你这样写:我把所有的val1都放在A列,如果我写
=PERCENTRANK(A1:A10,3)
我得到0.333,很抱歉,我不明白你的问题。没有excel,如何计算val2_percent@eliasah@JacekLaskowski LOL我知道如何使用excel,但我不确定A1:A10代表的范围是多少:)
+----+----+------------------+----------------+
|val1|val2|      val1_percent|val2_percent    |
+----+----+------------------+----------------+
|   1|   2|               0.0|0.333           |
|   1|   6|               0.0|0.611           |
|   1|  12|               0.0|0.888           |
|   2|   1|0.3333333333333333|0               |
|   3|   4|0.4444444444444444|0.555           |
|   4|   5|0.5555555555555556|0.583           |
|   8|   8|0.6666666666666666|0.666           |
|  11|   7|0.7777777777777778|0.638           |
|  12|   5|0.8888888888888888|0.583           |
|  13|   3|               1.0|0.444           |
+----+----+------------------+----------------+