首页 > 解决方案 > spark 的 approxQuantile 问题,无法识别 List

问题描述

我在 java8 项目中使用 spark-sql-2.4.1v。

我需要计算以下给定数据框的某些(计算的)列(即)con_dist_1上的分位数:con_dist_2df

+----+---------+-------------+----------+-----------+
|  id|     date|   revenue   |con_dist_1| con_dist_2|
+----+---------+-------------+----------+-----------+
|  10|1/15/2018|  0.010680705|         6|0.019875458|
|  10|1/15/2018|  0.006628853|         4|0.816039063|
|  10|1/15/2018|   0.01378215|         4|0.082049528|
|  10|1/15/2018|  0.010680705|         6|0.019875458|
|  10|1/15/2018|  0.006628853|         4|0.816039063|
|  10|1/15/2018|   0.01378215|         4|0.082049528|
|  10|1/15/2018|  0.010680705|         6|0.019875458|
|  10|1/15/2018|  0.010680705|         6|0.019875458|
|  10|1/15/2018|  0.014933087|         5|0.034681906|
|  10|1/15/2018|  0.014448282|         3|0.082049528|
+----+---------+-------------+----------+-----------+

List<String> calcColmns = Arrays.asList("con_dist_1","con_dist_2")

当我尝试使用第一个版本时approxQuantile,即 approxQuantile(List<String>, List<Double>, double) 如下

List<List<Double>> quants = df.stat().approxQuantile(calcColmns , Array(0.0,0.1,0.5),0.0);

它给出了错误:

DataFrameStatFunctions 类型中的方法 approxQuantile(String, double[], double) 不适用于参数 (List, List, double)

这里有什么问题?我在我的eclipseIDE中做这件事。为什么List<String>即使我通过了它也没有调用List<String>

添加了 API 的快照:

在此处输入图像描述

标签: javaapache-sparkjava-8apache-spark-sqlquantile

解决方案


看起来这可能是由于Array在函数的输入中使用了approxQuantile。最简单的解决方法是对列和百分位数都使用数组(这将使用approxQuantileAPI 快照中的第三种方法。:

String[] calcColmns = {"con_dist_1", "con_dist_2"};
double[] percentiles = {0.0,0.1,0.5};

然后调用函数:

double[][] quants = df.stat().approxQuantile(calcColmns, percentiles, 0.0);

推荐阅读