scala - row.getDouble 中的 Spark scala 参数

标签 scala apache-spark spark-dataframe

当我尝试在类里面将数据帧传输到 RDD 时,我遇到了一个非常有趣的错误。

我构建了一个名为 ROC 的类,它看起来像这样:

class ROC(lines : DataFrame, x: Int, y: Int) {

    private val metrics: BinaryClassificationMetrics =
        new BinaryClassificationMetrics(
          lines.map(row => (row.getDouble(x), row.getDouble(y))))

}

它给我一个错误

org.apache.spark.SparkException: Task not serializable

但是当我在 getDouble() 中键入 0 和 1 而不是传递参数 x 和 y 时,一切都很好。

              lines.map(row => (row.getDouble(0), row.getDouble(1))))

虽然我已经通过在 map 之前添加 select 方法解决了这个问题,但我很好奇这是怎么发生的。有任何想法吗?非常感谢!

最佳答案

Row.getDouble(index : Int) 将行的整数索引作为输入,而 x 和 y 定义为字符串。您的代码应该在 row.getDouble(x) 处给出编译时错误,因为 x 是一个字符串。您可能正在运行一些以前编译过的代码。

关于scala - row.getDouble 中的 Spark scala 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37150505/

相关文章:

scala - 如何将外部库添加到 Scala 解释器的类路径中?

scala - Hadoop FileUtils 无法从 Scala 在本地(Unix)文件系统上写入文件

apache-spark - Spark 中的 Dataframe 连接可以保留顺序吗?

scala - Spark 数据集和 java.sql.Date

oracle - 使用 Spark 1.6.2 JDBC 读取 Oracle 数据的并行性

Python Spark,从执行器访问类静态变量

apache-spark - group by 子句中的 sparkSQL Map 列

hadoop - 已安装 Spark 但未找到命令 'hdfs' 或 'hadoop'

scala - Scala 中的选项 monad

python - Spark 无法 pickle method_descriptor