Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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

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
Java 在Spark中是精确分位数还是近似分位数?_Java_Apache Spark_Statistics - Fatal编程技术网

Java 在Spark中是精确分位数还是近似分位数?

Java 在Spark中是精确分位数还是近似分位数?,java,apache-spark,statistics,Java,Apache Spark,Statistics,为了计算分位数,我使用approxQuantile方法,该方法可从Spark的任何Dataset或Dataframe中的stat()函数访问。它接近它们的方式 @测试 @DisplayName(“法国公共人口分位数”) public void quantiles()抛出技术异常{ 数据集PopulationCommunies=individus()。选择Expr(“PopulationTotal”); double[]quantiles=populationcommunies.stat().ap

为了计算分位数,我使用
approxQuantile
方法,该方法可从
Spark
的任何
Dataset
Dataframe
中的
stat()
函数访问。它接近它们的方式

@测试
@DisplayName(“法国公共人口分位数”)
public void quantiles()抛出技术异常{
数据集PopulationCommunies=individus()。选择Expr(“PopulationTotal”);
double[]quantiles=populationcommunies.stat().approxQuantile(“populationtotal”,新的double[]{0.1,0.25,0.5,0.75,0.9},0);
LOGGER.info(“法国公社人口:\n Q(10%):{},Q(25%)={},Q(50%)={},Q(75%)={},Q(90%)={},”,
分位数[0]、分位数[1]、分位数[2]、分位数[3]、分位数[4]);
}
结果令人放心:

Population des communes françaises :
 Q(10%) : 105.0, Q(25%) = 204.0, Q(50%) = 468.0, Q(75%) = 1186.0, Q(90%) = 3250.0
但是,如果我真的想得到准确的分位数值,而不是近似的分位数值,那么如何使用
Spark

在这里,我有大约35000个城市:我很乐意花时间研究
Spark
数据集的每个值

Spark中的
approxQuantile
函数可以用来计算精确的分位数。从中我们可以看到有3个参数:

最后一个是
relativeError
。这里的描述是:

relativeError—要达到的相对目标精度(大于或等于0)。如果设置为零,将计算精确的分位数,这可能非常昂贵。请注意,接受大于1的值,但给出的结果与1相同

所以你需要做的就是把这个参数设置为0.0

public double[][] approxQuantile(String[] cols, double[] probabilities, double relativeError)