当前位置: 首页 > 知识库问答 >
问题:

如何计算阿帕奇火花的平均值?

韦飞尘
2023-03-14

我处理了像这样存储的双精度列表:

JavaRDD<Double> myDoubles

我想计算这个列表的平均值。根据文档,:

MLlib的所有方法都使用Java友好类型,因此您可以像在Scala中一样导入和调用它们。唯一的警告是,这些方法采用Scala RDD对象,而Spark Java API使用单独的JavaRDD类。您可以通过对JavaRDD对象调用.RDD()将JavaRDD转换为Scala RDD。

在同一页面上,我看到以下代码:

val MSE = valuesAndPreds.map{case(v, p) => math.pow((v - p), 2)}.mean()

根据我的理解,这相当于(就类型而言)

Double MSE = RDD<Double>.mean()

因此,我尝试像这样计算我的<code>JavaRDD</code>的平均值:

myDoubles.rdd().mean()

然而,它不起作用,给了我以下错误:<code>方法mean()对于RDD类型是未定义的

共有2个答案

邵研
2023-03-14

不要忘记在scala文件的顶部添加导入org.apache.spark.SparkContext._。还要确保您在RDD[Double]调用means()

万乐逸
2023-03-14

这实际上非常简单:mean() 是为 Java 双RDD 类定义的。我没有找到如何从爪哇RDD投射

确实,scala中的这条线

val mean = valuesAndPreds.map{case(v, p) => (v - p)}.mean()

可以用Java表示为

double mean = valuesAndPreds.mapToDouble(tuple -> tuple._1 - tuple._2).mean();

 类似资料:
  • 我在尝试将spark数据帧的一列从十六进制字符串转换为双精度字符串时遇到了一个问题。我有以下代码: 我无法共享txs数据帧的内容,但以下是元数据: 但当我运行这个程序时,我得到了一个错误: 错误:类型不匹配;找到:MsgRow需要:org.apache.spark.sql.行MsgRow(row.getLong(0),row.getString(1),row.getString(2),hex2in

  • 目前我正在研究Apache spark和Apache ignite框架。 这篇文章介绍了它们之间的一些原则差异,但我意识到我仍然不理解它们的目的。 我的意思是,哪一个问题更容易产生火花而不是点燃,反之亦然?

  • 阅读 https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/feature/Word2Vec.scala 这种实现的文字是谷歌Word2Vec的一个端口 https://code.google.com/archive/p/word2vec/ 这是“向量空间中单词表示的有效估计”

  • 我对Apache Spark的世界比较陌生。我正在尝试使用LinearRegressionWithSGD()来估计一个大规模模型,我希望在不需要创建庞大的设计矩阵的情况下估计固定效果和交互项。 我注意到在决策树中有一个支持分类变量的实现 https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?