如何在 java 中使用 Apache spark 计算中位数和众数?
Posted
技术标签:
【中文标题】如何在 java 中使用 Apache spark 计算中位数和众数?【英文标题】:How to calculate median and mode using Apache spark in java? 【发布时间】:2015-08-10 13:58:19 【问题描述】:此页面包含均值、最大值、方差等,但不包含中值和众数。https://spark.apache.org/docs/1.1.1/mllib-statistics.html
我用这段代码解析数据
JavaRDD<Vector> parseData = data .map(new Function<String, Vector>()
/** * */
private static final long serialVersionUID = 1L;
public Vector call(String line)
// del = " " String[] sArray = line.trim().split(delimiterFinal);
double[] values = new double[sArray.length];
for (int i = 0; i < sArray.length; i++)
if (columnsSet.contains(i))
values[i] = Double.parseDouble(sArray[i]);
return Vectors.dense(values);
【问题讨论】:
afaik:你必须自己编写代码。但这很容易。 【参考方案1】:是的,同意,您必须自己编写代码(不过是很好的练习)。例如中位数非常简单,您只需排序并找到中间点(查看中位数定义以获取详细信息)然后您有两种情况,一种分裂恰好发生在一个点(nvalues%%2=1)然后就是值或秒 (nvalues%%2=0) 然后是这两个值的平均值。
Mode 更简单,只是显示最多的值。
【讨论】:
计算精确中位数很简单,但在大型数据集上可能会非常昂贵。以上是关于如何在 java 中使用 Apache spark 计算中位数和众数?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Java API 将文本文件、图像存储到 Apache Spark 中?
如何在Spark提交中使用s3a和Apache spark 2.2(hadoop 2.8)?
Apache Spark:如何使用 Java 在 dataFrame 中的空值列中插入数据
如何在现有的 Web 应用程序中使用 apache spark
尝试使用 Apache spark Java API 透视表
在 spark java api( org.apache.spark.SparkException ) 中使用 filter(),map(),... 时出错