Spark数据集方法是否会序列化计算本身?

问题描述 投票:-1回答:1

我有一个包含多列的数据集。需要调用一个函数以使用一行中可用的数据来计算结果。因此,我将案例类与方法结合使用,并使用该案例创建了数据集。例如,

case class testCase(x: Double, a1: Array[Double], a2: Array[Double]) {
    var someInt = 0
    def myMethod1(): Unit = {...}    // use x, a1 and a2
    def myMethod2(): Unit = {...}    // use x, a1 and a2
    def result(): { return someInt }

main()称为

val res = myDS.map(_.result()).toDF("result")

我面临的问题是,无论我如何调用,代码都可以正常工作,与程序的其他部分不同,以上语句不能同时工作。不论执行者,内核和repartition ing的数量如何,一种方法的一个实例似乎都只能工作!

任何暗示我应该看的东西都会受到赞赏。

scala apache-spark apache-spark-dataset
1个回答
0
投票

testCase案例类不应是可变的,因此,如果您同时修改对象的状态,则程序将是不确定的。您所提供的一些信息看起来有什么问题是此代码段

var someInt = 0

该值可能正在由多个任务同时修改,我很确定您不希望这样做。

您能解释一下您想做什么吗?

© www.soinside.com 2019 - 2024. All rights reserved.